- 文件层级
/home/cong/test/
--config/logconfig.yaml
--log/cong.log
--test.py
- 配置文件
vim /home/cong/test/config/logconfig.yaml
version: 1
disable_existing_loggers: False
formatters:
consoleFormatter:
format: "%(asctime)s|%(pathname)s|%(levelname)s|%(message)s" # 输出到控制台的日志格式
fileFormatter:
format: "%(asctime)s|%(process)d|%(pathname)s|%(lineno)d lines|%(levelname)s|%(message)s" # 输出到文件的日志格式
handlers:
consoleHandler: # 控制台日志句柄
class: logging.StreamHandler
level: INFO
formatter: consoleFormatter
stream: ext://sys.stdout
# 模型模块日志设置
congRotatingFileHandler: # 文件日志句柄
class: logging.handlers.RotatingFileHandler
level: INFO
formatter: fileFormatter
filename: /home/cong/test/log/cong.log
maxBytes: 1024000
backupCount: 5
encoding: utf-8
# 模型模块日志设置
cong2RotatingFileHandler: # 文件日志句柄
class: logging.handlers.RotatingFileHandler
level: INFO
formatter: fileFormatter
filename: /home/cong/test/log/cong2.log
maxBytes: 1024000
backupCount: 5
encoding: utf-8
root:
level: ERROR
handlers: [consoleHandler]
loggers:
cong:
level: INFO
handlers: [congRotatingFileHandler,consoleHandler] # 需要输出的日志句柄
propagate: no # 若为yes则在root中显示该模块日志,否则no
cong2:
level: INFO
handlers: [cong2RotatingFileHandler,consoleHandler] # 需要输出的日志句柄
propagate: no # 若为yes则在root中显示该模块日志,否则no
- 代码使用
import yaml
import logging.config
import sys
MAINPATH = sys.path[0] # 获取脚本所在路径
LOGCONF_FILE = MAINPATH + '/config/logconfig.yaml' # 获取日志配置文件所在路径
try:
with open(LOGCONF_FILE, 'rb') as f:
cfg_dict = yaml.load(f) # 读取配置文件
logging.config.dictConfig(cfg_dict)
logger = logging.getLogger('cong') # 使用 cong 的配置实例化
logger.info('日志模块初始化成功')
logger.warn('测试:warn')
logger.error('测试:error')
except Exception as e:
print('日志配置初始化失败')
print(e)