将 stdout 和 stderr 重定向到两个不同的日志文件
Redirection of stdout and stderr to two different log files
是否可以在两个不同的文本文件中重定向标准输出和标准错误?我正在努力处理以下代码,但没有得到我想要的。使用下面的代码,我只能看到退出状态 (0) 在 Output_Log.txt:
中打印
-------SSH Connection opened and command sent to remote server-----
stdout_data = []
stderr_data = []
stdout_data = sys.stdout
stderr_data = sys.stderr
sys.stdout = open('Output_Log.txt','w')
sys.stderr = open('Error_Log.txt','w')
---------Main Code-------------
while True:
try:
if session.recv_ready():
stdout_data.append(session.recv(16384))
if session.recv_stderr_ready():
stderr_data.append(session.recv_stderr(16384))
if session.exit_status_ready():
break
----------Main code ends-------------------
except socket.timeout:
print("SSH channel timeout exceeded.")
break
except Exception:
traceback.print_exc()
break
print 'exit status: ', session.recv_exit_status()
print ''.join(stdout_data)
print ''.join(stderr_data)
在您的 python 代码中,您应该能够在最后执行以下操作。
sys.stdout.write(stdout_data)
sys.stderr.write(stderr_data)
我不知道 sys.stdout 什么的,但是你试过移动一些代码吗?喜欢把东西写在最后,或者使用类似的东西:
f = open('Error_Log.txt','w')
f.write(stdout_data)
最好的猜测哈哈!
您是否考虑过只使用 logging 模块?
是否可以在两个不同的文本文件中重定向标准输出和标准错误?我正在努力处理以下代码,但没有得到我想要的。使用下面的代码,我只能看到退出状态 (0) 在 Output_Log.txt:
中打印-------SSH Connection opened and command sent to remote server-----
stdout_data = []
stderr_data = []
stdout_data = sys.stdout
stderr_data = sys.stderr
sys.stdout = open('Output_Log.txt','w')
sys.stderr = open('Error_Log.txt','w')
---------Main Code-------------
while True:
try:
if session.recv_ready():
stdout_data.append(session.recv(16384))
if session.recv_stderr_ready():
stderr_data.append(session.recv_stderr(16384))
if session.exit_status_ready():
break
----------Main code ends-------------------
except socket.timeout:
print("SSH channel timeout exceeded.")
break
except Exception:
traceback.print_exc()
break
print 'exit status: ', session.recv_exit_status()
print ''.join(stdout_data)
print ''.join(stderr_data)
在您的 python 代码中,您应该能够在最后执行以下操作。
sys.stdout.write(stdout_data)
sys.stderr.write(stderr_data)
我不知道 sys.stdout 什么的,但是你试过移动一些代码吗?喜欢把东西写在最后,或者使用类似的东西:
f = open('Error_Log.txt','w')
f.write(stdout_data)
最好的猜测哈哈!
您是否考虑过只使用 logging 模块?