您的位置:首页 > 编程语言 > Python开发

Python3.5 控制台日志输出,区分标准输出与错误输出

2018-01-24 11:40 513 查看
import logging
import sys

class ConsoleHandler(logging.Handler):
terminator = '\n'

def __init__(self, level=logging.NOTSET):
super().__init__(level)

def _flush(self, stream):
self.acquire()
try:
if stream and hasattr(stream, 'flush'):
stream.flush()
finally:
self.release()

def emit(self, record):
try:
msg = self.format(record)
stream = sys.stderr if record.levelname == 'ERROR'else sys.stdout
stream.write(msg)
stream.write(self.terminator)
self._flush(stream)
except BaseException as ex:
record.msg = record.getMessage() + ' WriteLogException:' + str(ex)
self.handleError(record)

if __name__ == "__main__":
_logger = logging.root
_logger.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
_console_handler = ConsoleHandler(logging.INFO)
_console_handler.setFormatter(formatter)
_logger.addHandler(_console_handler)
logging.info('info')
logging.error('error')

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐