模块
python的日志模块是logging
, 属于标准库,无需自动安装。
日志配置
使用日志模块,一般会先创建一个日志配置文件。配置文件有两种写法, 配置文件包括Loggers
(日志记录器)、Handlers
(日志处理器)、Filters
(日志过滤器)和 Formatters
(日志格式化器)。
1.conf文件配置
logging.conf
[loggers] # 选择日志记录器
keys = root
[handles] # 选择日志处理器
keys = consoleHandler
[formatters] # 选择日志格式化器
keys=simpleFormatter
[logger_root] # 日志记录器, 选择日志输出在哪
level=DEBUG # 日志等级
handlers=consoleHandler
[handler_consoleHandler] # 日志处理器, 通过调用不同的class来处理日志
class=StreamHandler # 输出到标准输出
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[formatter_simpleFormatter] # 日志格式化器, 格式化日志输出
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=
日志等级
DEBUG
:排查故障时使用的低级别系统信息,通常开发时使用
INFO
:一般的系统信息,并不算问题
WARNING
:描述系统发生小问题的信息,但通常不影响功能
ERROR
:描述系统发生大问题的信息,可能会导致功能不正常
CRITICAL
:描述系统发生严重问题的信息,应用程序有崩溃的风险
在配置文件中配置好日志等级后,智慧输出等级高于配置等级的日志。
配置文件使用
在要记录日志的文件
config.fileConfig(配置文件路径)
logger = logging.getLogger(日志名)
2. python字典配置
将配置写在字典中是一种更常见的配置方式。只需要早要记录日志的py文件中写入
logging_config = {
'version': 1,
'disable_existing_loggers': False, # 不使其他日志失效
'formatters': { # 日志格式化器
'default': {
'datefmt': '%Y-%m-%d %H:%M:%S',
'format': '%(asctime)s %(levelname)s %(message)s',
},
},
'handlers': { # 日志处理器
'console': { # 标准输出输出
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'default'
},
'file': { # 输出到文件
'level': 'DEBUG',
'class': 'logging.handlers.TimedRotatingFileHandler', # 所使用的处理类,这个类可以固定时间开始新的日志,保存原来的日志
'formatter': 'default',
'when': "d", # 时间单位可以是h, d, m , y
'interval': 1, # 单位数量,多长时间开始新的记录
'backupCount': 30, # 能保存的最大日志文件数量
'filename': 文件名
}
},
'loggers': { # 日志记录器
'StreamLogger': {
'handlers': ['console'], # 所使用的处理器
'level': 'DEBUG',
},
'FileLogger': {
# 既有 console Handler,还有 file Handler
'handlers': ['console', 'file'],
'level': 'DEBUG',
},
}
}
# 加载配置
logging.config.dictConfig(logging_config)
# 实例化logger 加载loggers的配置
logger = logging.getLogger("FileLogger")
日志使用
# 通过使用不同的方法记录不同等级的日志
logger.error(日志信息)
logger.info(日志信息)