python中同时输出到终端和日志log文件

import sys

class Logger(object):
    def __init__(self, file_name = 'temp.log', stream = sys.stdout) -> None:
        self.terminal = stream
        self.log = open(f'log/{file_name}', "a")

    def write(self, message):
        self.terminal.write(message)
        self.log.write(message)

    def flush(self):
        pass

# open log handler before print
filename = "log"
log_file_name = f"{filename}.log"
sys.stdout = Logger(str(log_file_name))
sys.stderr = Logger(str(log_file_name))
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
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` 的输出写入到日志文件。在实际应用,可以根据需要修改该类的实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值