首页 » Linux » python模块之logging

python模块之logging

 

日志级别

日志级别有以下几种,默认级别是warning

CRITICAL = 50 #FATAL = CRITICAL
ERROR = 40
WARNING = 30 #WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0 #不设置

logging模块对象说明

  1. logger:产生日志的对象
  2. filter:过滤日志的对象
  3. handler:接收日志然后控制打印到不同的地方,FileHandler用来打印到文件中,StreamHandler用来打印到终端
  4. Formatter:可以定制不同的日志格式对象,然后绑定给不同的handler对象使用,以此来控制不同的handler日志格式。

日志格式参数说明:

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用户输出的消息

具体流程使用说明:
1. – logger对昂 :负责产生日志信息 logger=logging.getLogger('root')
2. Handler对象:负责接收Logger对象传来的日志内容,控制打印到终端或文件

h1=logging.FileHandler('t1.log')
h2=logging.FileHandler('t2.log')
h3=looging.StreamHandler()

3、 formatter对象:

#给文件
formatter1=logging.Formatter(
    '%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S %p',
)

#给终端
formatter2=logging.Formatter(
    '%(asctime)s - %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S %p',
)

4、为handle对象绑定日志格式,

h1.setFormatter(formatter1)
h2.setFormatter(formatter1)
h3.setFormatter(formatter2)

5、设置日志级别

h1.setLevel(30)
h2.setLevel(30)
h3.setLevel(30)

6、把h1,h2,h3都add给logger,这样logger对象才能把自己的日志交给他们三负责输出

logger.addHandler(h1)
logger.addHandler(h2)
logger.addHandler(h3)
logger.setLevel(20) #括号的数字一一定要<= Handler对象的数字。

7、测试打印

logger.debug('debug')
logger.info('info')
logger.warning('warn123') #30
logger.error('error')
logger.critical('critical')

强调:如果想要日志成功打印
日内容的级别 >= Logger对象的日志级别 >= Handler对象的日志级别

 

原文链接:python模块之logging,转载请注明来源!

0