Bash Linux 如何创建 stderr、stdout 和组合日志文件



使用 linux bash,我必须将我的 nodejs 应用程序的日志重定向到 stdout 和 stderr 日志文件,还要创建第三个日志文件,将它们合二为一。

我用过:node app.js 1>log/stdout.log 2>log/stderr.log

我已经搜索了一些命令来附加,用于创建将 stdout.log 和 stderr.log 组合在一个组合文件中.log日志文件。

我试图从其他人类似问题的建议中使用tee命令,但我不能。

你可以帮我吗?

谢谢

默认情况下,您有 3 个变量:0 保存 stdin1 保存 stdout2 保存 stderr ,为了能够执行您的建议,意味着使用第 3 个占位符、3tee 命令交换上述 2 个变量的内容:默认情况下,tee仅"捕获"stdout

(((node app.js | tee log_stdout.txt) 3>&1 1>&2 2>&3 | tee log_stderr.txt ) 3>&2 2>&1 1>&3 ) > log_combined.txt 2>&1

详细的解释可以在这里找到

下面是一个对我有用的 -

$ node a.js 1>stdout.log 2>stderr.log ; cat stdout.log stderr.log >> all.log

答.js

console.log('Hello World');

演示stdout -

root@a2980bfaeb16:/# node a.js 1>stdout.log 2>stderr.log ; cat stdout.log stderr.log >> all.log
root@a2980bfaeb16:/# cat stdout.log 
Hello World
root@a2980bfaeb16:/# cat stderr.log 
root@a2980bfaeb16:/# cat all.log    
Hello World

演示stderr(犯一个愚蠢的错误,看看它是否适用于stderr( -

root@a2980bfaeb16:/# node a.js 1>stdout.log 2>stderr.log ; cat stdout.log stderr.log >> all.log
root@a2980bfaeb16:/# cat stdout.log 
root@a2980bfaeb16:/# cat stderr.log 
/a.js:1
(function (exports, require, module, __filename, __dirname) { console.g('Hello World');
                                                                      ^
TypeError: console.g is not a function
    at Object.<anonymous> (/a.js:1:71)
    at Module._compile (module.js:660:30)
    at Object.Module._extensions..js (module.js:671:10)
    at Module.load (module.js:573:32)
    at tryModuleLoad (module.js:513:12)
    at Function.Module._load (module.js:505:3)
    at Function.Module.runMain (module.js:701:10)
    at startup (bootstrap_node.js:194:16)
    at bootstrap_node.js:618:3
root@a2980bfaeb16:/# cat all.log    
Hello World
/a.js:1
(function (exports, require, module, __filename, __dirname) { console.g('Hello World');
                                                                      ^
TypeError: console.g is not a function
    at Object.<anonymous> (/a.js:1:71)
    at Module._compile (module.js:660:30)
    at Object.Module._extensions..js (module.js:671:10)
    at Module.load (module.js:573:32)
    at tryModuleLoad (module.js:513:12)
    at Function.Module._load (module.js:505:3)
    at Function.Module.runMain (module.js:701:10)
    at startup (bootstrap_node.js:194:16)
    at bootstrap_node.js:618:3

希望对您有所帮助!

PS - 我试图将重定向与管道集成,但还没有运气。

最新更新