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

logging 日志模块

程序员文章站 2022-07-02 17:19:51
logging 日志模块 一,级别的概念 二,修改配置信息 #format的多种格式 三,具体需求的实现 #暂时忽略,要用到面向对象的值是,而且可以通过生成器setlevel过滤 更改需求,实现对多个对象不同需求的实现 重点,四,引用配置模块 #logging.config 专门用于配置loggin ......

logging 日志模块

一,级别的概念

logging.debug('debug') 
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.critical('critical')
默认输出结果是warning以上的级别,如果输出以下级别需要修改配置信息。

二,修改配置信息

#修改配置信息(修改默认的信息)
# logging.basicconfig(filename='a.txt',     #指定的文件名
#                     filemode='a',       #文件打开的模式
#                     level=logging.debug,   #指定级别
#                     format='%(filename)s %(levelname)s %(asctime)s %(message)s') #指定显示的格式
#                       format的多种格式参见笔记
# logging.debug('debug')
# logging.info('info')
# logging.warning('warning')
# logging.error('error')
# logging.critical('critical')

#format的多种格式

'''
%(name)s:logger的名字,并非用户名,详细查看

%(levelno)s:数字形式的日志级别

%(levelname)s:文本形式的日志级别

%(pathname)s:调用日志输出函数的模块的完整路径名,可能没有

%(filename)s:调用日志输出函数的模块的文件名

%(module)s:调用日志输出函数的模块名

%(funcname)s:调用日志输出函数的函数名

%(lineno)d:调用日志输出函数的语句所在的代码行

%(created)f:当前时间,用unix标准的表示时间的浮 点数表示

%(relativecreated)d:输出日志信息时的,自logger创建以 来的毫秒数

%(asctime)s:字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒

%(thread)d:线程id。可能没有

%(threadname)s:线程名。可能没有

%(process)d:进程id。可能没有

%(message)s:用户输出的消息
'''

三,具体需求的实现

自定义四种核心功能
生成器:
 mylog = logging.getlogger("mylog")   
# 参数指定的是生成器的名称   (因为可以同时存在多个生成器)
mylog.setlevel(10)      
# 设置生成器的级别 低于该级别的不会生成
过滤器 :

#暂时忽略,要用到面向对象的值是,而且可以通过生成器setlevel过滤

处理器:
 handler = logging.filehandler("youlog.txt",encoding="utf8",) 
#文件名, 编码格式
#将处理器 绑定给生成器, add函数表明了一个生成器可以添加多个处理器
mylog.addhandler(handler)     #固定用法,生成器+内置函数+处理器名字
格式化处理器:
formater = logging.formatter(fmt="%(filename)s %(levelname)s %(asctime)s %(message)s")
# # 将格式化处理器 绑定给 handler
# handler.setformatter(formater)
执行代码,文件内输出日志结果。

 

更改需求,实现对多个对象不同需求的实现

mylog = logging.getlogger("mylog")
mylog.setlevel(10)
handler1 = logging.filehandler("youlog.txt",encoding="utf8")
mylog.addhandler(handler1)
handler2 = logging.filehandler("boss.txt",encoding="utf8",)
mylog.addhandler(handler2)
formater1= logging.formatter(fmt="%(threadname)s %(funcname)s %(module)s %(filename)s %(levelname)s %(asctime)s %(message)s")
handler1.setformatter(formater1)
formater2= logging.formatter(fmt="%(levelname)s %(asctime)s %(message)s")
handler2.setformatter(formater2)
mylog.info("info")
....
mylog.critical("critical")

重点,四,引用配置模块

#logging.config 专门用于配置logging 模块

import loggin.config

#通过一个字典来配置 logging模块

logging.config.dictconfig(loggin_config.logging_dic)

#字典作为参数传入,logging.getlogger('aa')拿到的logger配置

#aaloger是定义生成器的变量

aaloger = logging.getlogger("aa")  

#输出执行结果

aaloger.info("测试信息!")

#当要获取的名称不存在时 会返回一个默认的生成器

#默认是warning级别