Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
除标准输出外,bash直接输出到日志文件_Bash_Logging - Fatal编程技术网

除标准输出外,bash直接输出到日志文件

除标准输出外,bash直接输出到日志文件,bash,logging,Bash,Logging,我正在尝试将脚本所做的更改记录到日志文件中。在非常高的级别上,我的脚本有一些函数,我希望能够将这些信息记录到一个文件中。我使用了“tee-a”,但这在很多方面把功能搞砸了 有没有一个简单的方法来完成这项任务 更新:更正了下面的打字错误 function1(){ ... } function2(){ ... } #main function1 | tee -a /tmp/logfile function2 | tee -a /tmp/logfile 函数1(){…} 函数2(){…} #主要 功能

我正在尝试将脚本所做的更改记录到日志文件中。在非常高的级别上,我的脚本有一些函数,我希望能够将这些信息记录到一个文件中。我使用了“tee-a”,但这在很多方面把功能搞砸了

有没有一个简单的方法来完成这项任务

更新:更正了下面的打字错误

function1(){ ... } function2(){ ... } #main function1 | tee -a /tmp/logfile function2 | tee -a /tmp/logfile 函数1(){…} 函数2(){…} #主要 功能1 |三通-a/tmp/logfile 功能2 |三通-a/tmp/logfile (编辑以反映问题编辑) 可以将T形三通合并到函数定义中:

function() { { ...<original function definition goes here>; } | tee -a output; }
function()
因此,不需要每次调用函数时都调用tee。显然,如果函数修改了文件描述符,您将需要做更多的工作。另外,请记住,这会改变缓冲。如果从function1中调用的命令的stdout有一个tty,它们可能会对其输出进行行缓冲,但是如果它们的stdout是管道(如果您是管道连接到
T
),则输出将被块缓冲。这可能是你所看到的差异的根本原因。此外,这仅捕获一个文件描述符的输出。也许您有向stderr写入的命令。您将需要提供有关“管道到T形三通”更改脚本行为的方式的更多详细信息