python保存终端输出写进日志
时间: 2023-07-01 10:25:53 浏览: 217
在 Python 中,可以使用 logging 模块将终端输出写入日志文件。具体实现可以参考以下示例代码:
```python
import logging
import sys
class StreamToLogger:
"""
把 stdout 和 stderr 输出到日志文件中
"""
def __init__(self, logger, log_level=logging.INFO):
self.logger = logger
self.log_level = log_level
self.linebuf = ''
def write(self, buf):
for line in buf.rstrip().splitlines():
self.logger.log(self.log_level, line.rstrip())
logging.basicConfig(filename='example.log', level=logging.DEBUG)
stdout_logger = logging.getLogger('STDOUT')
stdout_logger.setLevel(logging.INFO)
stdout_handler = logging.StreamHandler(sys.stdout)
stdout_logger.addHandler(stdout_handler)
stdout_logger.info('This is a test message')
stderr_logger = logging.getLogger('STDERR')
stderr_logger.setLevel(logging.ERROR)
stderr_handler = logging.StreamHandler(sys.stderr)
stderr_logger.addHandler(stderr_handler)
stderr_logger.error('This is an error message')
```
在上面的代码中,我们使用 `logging.getLogger` 方法创建了两个日志记录器,分别用于记录 `stdout` 和 `stderr` 的输出。然后,我们使用 `StreamHandler` 将输出重定向到日志文件中,并设置了不同的日志级别。最后,我们使用 `logger.log` 方法将输出内容写入到日志文件中。
需要注意的是,上述代码中的 `StreamToLogger` 类是一个自定义的输出流类,用于把 `stdout` 和 `stderr` 的输出写入到日志文件中。在实际应用中,可以根据需要修改该类的实现。
阅读全文