首页 文章

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

提问于
浏览
4

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

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

我已经搜索了一些命令来追加创建日志文件,该文件将stdout.log与stderr.log结合在一起 .

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

你能帮助我吗?

谢谢

2 回答

  • 0

    默认情况下,您有3个变量: 0 ,其中包含 stdin1 ,其中包含 stdout2 ,其中包含 stderr ,以便能够执行您建议的使用第3个占位符, 3tee 命令交换上述2个变量的内容:默认 tee 仅"catches" 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
    

    详细解释可以在here找到

  • 3

    下面一个为我工作 -

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

    a.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 - 我试图将重定向与管道集成,但还没有运气 .

相关问题