将 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 模块?