先创建一个函数以获得日志器
def get_logger(name):
logger = logging.getLogger(name)
logger.setLevel(logging.INFO)
# 以下两行是为了在jupyter notebook 中不重复输出日志
if logger.root.handlers:
logger.root.handlers[0].setLevel(logging.WARNING)
handler_stdout = logging.StreamHandler()
handler_stdout.setLevel(logging.INFO)
handler_stdout.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
logger.addHandler(handler_stdout)
handler_file = logging.FileHandler('log_file.log', encoding='utf-8')
handler_file.setLevel(logging.DEBUG)
handler_file.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
logger.addHandler(handler_file)
return logger
使用方法:
logger = get_logger(__name__)
# 希望输出如下日志
logger.debug('这是希望输出的debug内容')
logger.info('这是希望输出的info内容')
logger.warning('这是希望输出的warning内容')
会输出端口、和文件同路径下的 log_file.log文件中。
在jupyternotebook中同样适用,并且不会重复输出logging.