【发布时间】:2018-04-29 17:54:48
【问题描述】:
使用 python logging 包,并编写类 Log,我想将 stdout 和 stderr 发送到日志文件:
log = Log("log.txt")
print "line1"
print "line2"
print >>sys.stderr, "err1"
del log
print "line to screen only"
输出日志文件将包含:
16/11/2017 09:51:58 INFO - line1
16/11/2017 09:51:58 INFO - line2
16/11/2017 09:51:58 INFO - err1
知道如何编写这个 Log 类,同时保持“logging”包的优点(时间戳,...)?
【问题讨论】:
-
你绝对不能用
log.log(msg)代替print(msg)? -
否(“打印”太多,无法更改 ;-) 我检查了 stackoverflow.com/questions/616645/… 和 stackoverflow.com/questions/14058453/…(但反过来)。
-
为了确保您知道这一点,您可以向记录器添加一个流处理程序,这将使记录器同时写入
log.txt和stdout或stderr:ch = logging.StreamHandler(sys.stdout)@ 987654332@log.addHandler(ch) -
Python Popen: Write to stdout AND log file simultaneously 的可能重复项你也检查过那个吗?
-
老实说,替换
print语句(即使它们很多)听起来比将记录器附加到stdout的错误方法更容易解决。