常用Logging模块模板
废话不多说,直接上代码
如何使用dictConfig 设置Logging模板 ?
#config.py
setting = {
"version": 1,
"disable_existing_loggers": False, # 不覆盖默认配置
"formatters": { # 日志输出样式
"default": {
"format": '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
}
},
"handlers": {
"console": {
"class": "logging.StreamHandler", # 控制台输出
"level": "DEBUG",
"formatter": "default",
},
"log_file": {
"class": "logging.handlers.RotatingFileHandler",
"level": "DEBUG", #这个记录在log file的等级
"formatter": "default", # 日志输出样式对应formatters
"filename": './logs/pymysql.log', # 指定log文件目录
"maxBytes": 20 * 1024 * 1024, # 文件最大20M
"backupCount": 10, # 最多10个文件
"encoding": "utf8", # 文件编码
},
},
"root": {
"level": "DEBUG", # # handler中的level会覆盖掉这里的level
"handlers": ['console', "log_file"],
},
}
import os
#附带创建log file代码,可以放入config.py里面
path = './logs/pymysql.log'
try:
if not os.path.exists(path):
os.mkdir('./logs')
with open(path, 'w') as f:
pass
except FileExistsError:
with open(path, 'w') as f:
pass
#main.py
from logging.config import dictConfig
import logging
from config import setting
dictConfig(setting)
logger = logging.getLogger("root")
logger.debug('')
logger.warning('')
logger.error('')
其他模板可参考
https://stackoverflow.com/questions/7507825/where-is-a-complete-example-of-logging-config-dictconfig