据我所知,在 /lib/lsb/init.functions 中,log_failure_msg
是将失败消息输出到某个日志文件的正确方法。我想知道是否可以这样做。
python some/script/here.py 2>> log_failure_msg
log_failure_msg 通常像这样使用log_failure_msg "some failure message"
我怀疑这不会像我希望的那样工作,因为 stderr 是传递给 log_failure_msg 的消息。我会测试一下,但我也不确定这个新创建的日志文件放在哪里。如果有人能帮助或提供如何使用 log_failure_msg 记录我的错误的替代方法,我将不胜感激。
还有一件事。在我的 python 行之后,我有retval=$?
。我需要这行紧跟在我的 python 命令之后,这样我才能捕获返回代码。由于这个原因,我想不出任何方法来获取 stderr 并将其分配给可以传递给 log_failur_msg 的变量。
谢谢
答案1
如果你检查一下log_failure_msg, 它说:
log_failure_msg message
The log_failure_msg function shall cause the system to write a failure
message to an unspecified log file. The format of the message is
unspecified.The log_failure_msg function may also write a message to the
standard output.
Note: The message should be relatively short; no more than 60 characters
is highly desirable.
因此看起来该函数只能写入standard output
not standard error
。这样 a2> somewhere
就不起作用了。
另一方面,如果你想要一个 Python 脚本来写入stderr
,那么邮政会告诉你如何操作log_failure_msg
。Shell 脚本其典型来源如下:
#!/bin/bash
source /lib/lsb/init-functions
log_failure_msg "some error"
结合 Python 和 Shell 错误报告似乎不是一个好主意。