Python的Logger处理在IDE控制台和文件文件中打印日志的方法
demo如下:
[root@bogon demo]# tree
.
├── log
├── log.py
└── main.py
其中log是自动生成的保存日志文件的目录
log.py代码如下:
# -*- coding: UTF-8 -*-
import logging
import logging.handlers
import os
import sys
def get_root_path():
return os.path.dirname(os.path.abspath(__file__))
def get_log_file_path():
if not os.path.exists(os.path.join(get_root_path(), "log")):
os.mkdir(os.path.join(get_root_path(), "log"))
return os.path.join(get_root_path(), "log")
def get_logger(name):
"""
生成常见的记录器, 在控制台打印日志并生成日志文件记录日志信息
"""
logger = logging.getLogger(name)
if not logger.handlers:
console_formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(filename)s %(funcName)s: %(message)s')
file_formatter = logging.Formatter('%(asctime)s - %(levelname)-8s %(filename)s %(funcName)s: %(message)s')
# file handler
log_name = get_log_file_path() + "/" + 'all.log'
file_handler = logging.FileHandler(log_name, mode='w')
file_handler.setFormatter(file_formatter)
file_handler.setLevel(logging.DEBUG)
# console handler
console_handler = logging.StreamHandler(sys.stdout)
console_handler.formatter = console_formatter
console_handler.setLevel(logging.DEBUG)
logger.addHandler(file_handler)
logger.addHandler(console_handler)
logger.setLevel(logging.DEBUG)
return logger
main.py如下:
如何调用log方法
# -*- coding: UTF-8 -*-
from log import get_logger
logger = get_logger(__name__)
def main():
test = "Python3"
logger.info(f'Hello World, {test}')
if __name__ == '__main__':
main()
生成的日志格式:
2019-12-26 14:28:42,576 - INFO main.py main: Hello World, Python3