我有一个 python 脚本,它将向控制台写入一些常规日志记录。我已使用典型的python -u jbot.py | tee -a jbot.log
.这工作正常,我得到控制台输出和日志文件输入。但是,当尝试在屏幕下运行它时:
screen python -u jbot.py | tee -a jbot.log
我的文件中没有收到任何日志输出。一旦我断开连接screen
,该会话的控制台输出是否会被完全抑制,或者是否有办法仍然可以从脚本的 stdout 和 stderr 输入日志文件?
我意识到使用日志记录库可能会解决这个问题(因为无论如何我都会进行筛选),但现在我想坚持捕获控制台输出(如果可能),直到我可以将日志记录模块正确集成到我的代码中。
答案1
你需要做这样的事情:
screen sh -c 'python -u jbot.py | tee -a jbot.log'
基本上,在将 screen 的输出(不是直接的 python 脚本)传输到日志之前。 Screen 接受一个要执行的命令作为其参数,它本身不使用 shell。所以你需要明确地让它运行一个 shell。
另一种选择是使用屏幕的内置输出日志记录;查看该-L
选项(也可以通过其 UI 在屏幕内使用)。