配置文件
logging.yml 如下:
version: 1
formatters:
simple:
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
handlers:
console:
class: logging.StreamHandler
level: DEBUG
formatter: simple
stream: ext://sys.stdout
info_file_handler:
class: logging.handlers.RotatingFileHandler
level: INFO
formatter: simple
filename: ./info.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
loggers:
mylogger:
level: DEBUG
handlers: [ console,info_file_handler ]
propagate: no
root:
level: DEBUG
handlers: [ console]
代码
import logging
import yaml
from yaml import Loader
import logging.config
import os
def mylogger(path=None):
print('begin ---------------------------------')
if path is None:
path = './logs/{}.log'.format(os.path.basename(__file__).split('.')[0])
if not os.path.exists(os.path.dirname(path)):
os.mkdir(os.path.dirname(path))
with open("./logging.yml", "r") as f_conf:
dict_conf = yaml.load(f_conf, Loader)
dict_conf['handlers']['info_file_handler']['filename'] = path
logging.config.dictConfig(dict_conf)
logger = logging.getLogger("mylogger")
return logger
logger = mylogger()
# 日志输出
logger.debug("debug message.")
logger.info("info message.")
logger.warning("warning message.")
logger.error("error message.")
logger.critical("critical message.")