欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python日志模块logging简介

程序员文章站 2023-11-03 09:05:40
logging分为4个模块: loggers, handlers, filters, and formatters. ●loggers: 提供应用程序调用的接口 ●ha...

logging分为4个模块: loggers, handlers, filters, and formatters.

●loggers: 提供应用程序调用的接口
●handlers: 把日志发送到指定的位置
●filters: 过滤日志信息
●formatters: 格式化输出日志

logger

logger.setlevel() 设置日志级别
logger.addhandler()和logger.removehandler() 增加和删除日志处理器
logger.addfilter()和logger.removefilter() 增加和删除过滤器
logger.debug(), logger.info(), logger.warning(), logger.error(), and logger.critical() 创建不同的级别的日志
getlogger() 获取日志的根实例

handler

setlevel() 设置日志级别
setformatter() 设置输出格式
addfilter() and removefilter() 增加和删除过滤器

formatter

默认形式为: %y-%m-%d %h:%m:%s.
格式为: %()s

日志配置管理

硬编码形式

复制代码 代码如下:

import logging

# create logger
logger = logging.getlogger('simple_example')
logger.setlevel(logging.debug)

# create console handler and set level to debug
ch = logging.streamhandler()
ch.setlevel(logging.debug)

# create formatter
formatter = logging.formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# add formatter to ch
ch.setformatter(formatter)

# add ch to logger
logger.addhandler(ch)

# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')


输出
复制代码 代码如下:

$ python simple_logging_module.py
2005-03-19 15:10:26,618 - simple_example - debug - debug message
2005-03-19 15:10:26,620 - simple_example - info - info message
2005-03-19 15:10:26,695 - simple_example - warning - warn message
2005-03-19 15:10:26,697 - simple_example - error - error message
2005-03-19 15:10:26,773 - simple_example - critical - critical message

通过文件配置管理日志

代码:

复制代码 代码如下:

import logging
import logging.config

logging.config.fileconfig('logging.conf')

# create logger
logger = logging.getlogger('simpleexample')

# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')


配置文件:
复制代码 代码如下:

[loggers]
keys=root,simpleexample

[handlers]
keys=consolehandler

[formatters]
keys=simpleformatter

[logger_root]
level=debug
handlers=consolehandler

[logger_simpleexample]
level=debug
handlers=consolehandler
qualname=simpleexample
propagate=0

[handler_consolehandler]
class=streamhandler
level=debug
formatter=simpleformatter
args=(sys.stdout,)

[formatter_simpleformatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=


输出:
复制代码 代码如下:

$ python simple_logging_config.py
2005-03-19 15:38:55,977 - simpleexample - debug - debug message
2005-03-19 15:38:55,979 - simpleexample - info - info message
2005-03-19 15:38:56,054 - simpleexample - warning - warn message
2005-03-19 15:38:56,055 - simpleexample - error - error message
2005-03-19 15:38:56,130 - simpleexample - critical - critical message

日志格式

%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcname)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程id
%(threadname)s: 打印线程名称
%(process)d: 打印进程id
%(message)s: 打印日志信息

流程图

Python日志模块logging简介