logging配置文件及注释(使用需要删除注释)

# ==========logging配置文件==========

# 定义logger模块,root是父类,必须存在,其他的自定义
# 非实例化使用,而是通过logging.getLogger(name)来获取对象。相当于向logging模块注册了一种日志打印
# 如果name为loggers里面keys的值,则调用对应的配置,如果name没有则调用默认(root)的配置
# name 中用点 . 表示继承关系
# 可以有多个,以逗号隔开
# loggers默认的父对象是root,非占位对象,某个对象打日志时,父对象也会收到日志,并再打一次。
[loggers]
keys=root,infoLogger

# ==========实现logger对应的配置信息==========

# 必须是 logger_name  name为loggers中key的值
# level:日志级别,包括:CRITICAL,ERROR,WARNING,INFO,DEBUG
# handlers:日志处理器,可以有多个,以逗号隔开
# qualname:logger的名称,通过logging.getLogger(name)获取
# 如果获取的logger名称不存在,则调用默认(root)logger
# propagate:是否继承符类的配置信息,0:否 1:是
[logger_root]
level=DEBUG
handlers=consoleHandler,fileHandler

[logger_infoLogger]
handlers=consoleHandler,fileHandler
qualname=infoLogger
propagate=0

# ==========handlers的具体配置实现==========
# Handlers将logger发过来的信息进行准确地分配,以下包括控制台、文件;
# 一个logger可以拥有多个handler。
[handlers]
keys=consoleHandler,fileHandler

# 必须是"handler_name",其中name为handlers中keys的值
[handler_consoleHandler]
# class为logging包里面的handler处理器,要写完整的包名
class=StreamHandler
level=INFO
# formatter:日志输入格式
formatter=form02
# args:handler相关参数
args=(sys.stderr,)

[handler_fileHandler]
class=FileHandler
level=INFO
formatter=form01
args=('../logs/runlog.log', 'a')

# ==========日志输出格式化实现==========
# datefmt 日期格式 对应asctime
# ----------------------------
# 日志格式
# ----------------------------
# %(asctime)s      年-月-日 时-分-秒,毫秒
# %(filename)s     文件名,不含目录
# %(pathname)s     目录名,完整路径
# %(funcName)s     函数名
# %(levelname)s    级别名
# %(lineno)d       行号
# %(module)s       模块名
# %(message)s      日志信息
# %(name)s         日志模块名
# %(process)d      进程id
# %(processName)s  进程名
# %(thread)d       线程id
# %(threadName)s   线程名
#----------------------------
[formatters]
keys=form01,form02

[formatter_form01]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s

[formatter_form02]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s

发布了30 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u014722022/article/details/102694676