将stdout和stderr重定向到两个不同的日志文件

时间:2015-02-12 09:44:01

标签: python python-2.7 python-3.x paramiko

是否可以将stdout和stderr重定向到两个不同的文本文件中?我正在努力使用以下代码而没有得到我想要的东西。使用下面的代码,我只能在Output_Log.txt中看到退出状态(0):

-------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)

3 个答案:

答案 0 :(得分:0)

在你的python代码中,你应该能够在最后执行以下操作。

sys.stdout.write(stdout_data)
sys.stderr.write(stderr_data)

答案 1 :(得分:0)

我不了解sys.stdout或其他什么,但您是否尝试过移动一些代码?喜欢在最后写这些东西,或使用类似的东西:

f = open('Error_Log.txt','w')
f.write(stdout_data)

最好的猜测哈哈!

答案 2 :(得分:0)

您是否考虑过仅使用日志记录模块?