Closed rexyan closed 5 years ago
实现代码如下:
set_log_file
函数新加关键字参数: is_stdout
,当 is_stdout
为 True 时,为 logger
新加 addHandler
, logging.StreamHandler(sys.stdout)
def set_log_file(local_file=None, is_stdout=False):
default_log_file = 'default.log'
_formatter = logging.Formatter(
'%(asctime)s %(levelname)s %(filename)s[ln:%(lineno)d] %(message)s')
if local_file is not None:
default_log_file = local_file
_tfh = SafeFileHandler(filename=default_log_file)
_tfh.setLevel(logging.INFO)
_tfh.setFormatter(_formatter)
logger.setLevel(logging.INFO)
if is_stdout:
stdout_handler = logging.StreamHandler(sys.stdout)
logger.addHandler(stdout_handler)
logger.addHandler(_tfh)
if is_stdout:
stdout_handler = logging.StreamHandler(sys.stdout)
logger.addHandler(stdout_handler)
这种方式是在原有的基础上增加一个 stdout_handler ,目前的需求是仅输出至 stdout ,逻辑还要优化一下
新加函数 set_log_stdout
,调用时为 logger
添加 stdout_handler
:
def set_log_stdout():
"""
设置日志输出到标准输出中
:param: 无
:return: 无
举例如下::
from fishbase.fish_logger import *
set_log_stdout()
logger.info('test fish base log')
logger.warn('test fish base log')
logger.error('test fish base log')
print('log ok')
"""
_formatter = logging.Formatter(
'%(asctime)s %(levelname)s %(filename)s[ln:%(lineno)d] %(message)s')
logger.setLevel(logging.INFO)
stdout_handler = logging.StreamHandler(sys.stdout)
stdout_handler.setFormatter(_formatter)
logger.addHandler(stdout_handler)
在目前的 fishbase 版本中,大多数日志输出需求是将日志输出到磁盘中。在即将部署在 k8s 的系统中,希望将日志输出到标准输出中。这样增加 fishbase 日志输出灵活性。