python stdout stderr,如何在Python中将stdout和stderr重定向到记录器

I have a logger that has a RotatingFileHandler.

I want to redirect all Stdout and Stderr to the logger.

How to do so?

解决方案

Not enough rep to comment, but I wanted to add the version of this that worked for me in case others are in a similar situation.

class LoggerWriter:

def __init__(self, level):

# self.level is really like using log.debug(message)

# at least in my case

self.level = level

def write(self, message):

# if statement reduces the amount of newlines that are

# printed to the logger

if message != '\n':

self.level(message)

def flush(self):

# create a flush method so things can be flushed when

# the system wants to. Not sure if simply 'printing'

# sys.stderr is the correct way to do it, but it seemed

# to work properly for me.

self.level(sys.stderr)

and this would look something like:

log = logging.getLogger('foobar')

sys.stdout = LoggerWriter(log.debug)

sys.stderr = LoggerWriter(log.warning)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值