嵌入式Linux - >将应用程序日志保存到File

时间:2017-12-30 23:36:26

标签: linux shell logging embedded file-descriptor

您可能会将问题视为重复,但请阅读直到最后。

我在嵌入式Linux上运行了一个应用程序,我希望从应用程序中捕获所有日志。我尝试使用with文件描述符为1表示stdout,2表示stderr。我能够捕获stderr日志。我想使用 printf 语句捕获日志。该应用程序已经构建,因此我无法更改它。它是嵌入式Linux,因此它没有脚本实用程序。 我的应用程序有 printf 日志。我想要的只是使用shell命令捕获它们(如果有的话)。 我试过下面的命令

./application 2>&1 | tee file.txt
./application >cmd.log 2>&1
./application | tee log.txt

使用这些命令,我​​能够捕获错误消息,但不能捕获printf消息

请帮忙。

1 个答案:

答案 0 :(得分:1)

你的前两个命令行应该实际捕获所有发送的内容(通过printfputs,无论如何)到stdinstderr(最后一个命令行错过了后者)。

如果仍有消息打印到控制台或tty,则应用程序会重定向(例如,使用dup2stderr和/或stdout到某个其他设备,或者它没有根本不会将其输出发送到这两个文件(例如, glibc ,在某些错误情况下会直接写入控制台设备)。

在不知道输出实际发送到何处的情况下,无法捕获它。可以使用strace应用程序来找出这些字符串的发送位置。