码迷,mamicode.com
首页 > 编程语言 > 详细

Python日志logging模块

时间:2017-10-04 15:52:32      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:div   creat   ctime   文件名   ima   调用   线程   同步   style   

很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误、警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug()info()warning()error() and critical() 5个级别,下面我们看一下怎么用。

一.最简单用法

import logging
logging.debug(debug message)
logging.info(info message)
logging.warning(warning message)
logging.error(error message)
logging.critical(critical message)
#WARNING:root:warning message
#ERROR:root:error message
#CRITICAL:root:critical message  默认只显示warning以上的日志

二.修改默认配置

import logging  
logging.basicConfig(level=logging.DEBUG,    #这里是日志显示的级别
                    format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s,    #这里是打印的格式,要显示什么内容
                    datefmt=%a, %d %b %Y %H:%M:%S, #答应日期的格式 
                    filename=/tmp/test.log,  #日志保存的位置,如果这里不加filename,会以答应的形式显示出来,而不会保存
                    filemode=w)    #这里是w会重新覆盖,a是追加
  
logging.debug(debug message)  
logging.info(info message)  
logging.warning(warning message)  
logging.error(error message)  
logging.critical(critical message)

 1 format参数中可能用到的格式化串:
 2 %(name)s Logger的名字
 3 %(levelno)s 数字形式的日志级别
 4 %(levelname)s 文本形式的日志级别
 5 %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
 6 %(filename)s 调用日志输出函数的模块的文件名
 7 %(module)s 调用日志输出函数的模块名
 8 %(funcName)s 调用日志输出函数的函数名
 9 %(lineno)d 调用日志输出函数的语句所在的代码行
10 %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
11 %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
12 %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
13 %(thread)d 线程ID。可能没有
14 %(threadName)s 线程名。可能没有
15 %(process)d 进程ID。可能没有
16 %(message)s用户输出的消息


三.同步显示

这里出现一个问题,日志只能要么打印要么保存,只能选择一个,我们改进一下

import logging

logger = logging.getLogger()
# 创建一个handler,用于写入日志文件
fh = logging.FileHandler(test.log)

# 再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()

formatter = logging.Formatter(%(asctime)s - %(name)s - %(levelname)s - %(message)s)

fh.setFormatter(formatter)
ch.setFormatter(formatter)

logger.addHandler(fh) #logger对象可以添加多个fh和ch对象
logger.addHandler(ch)

logger.setLevel(logging.Debug) logger.debug(
logger debug message) logger.info(logger info message) logger.warning(logger warning message) logger.error(logger error message) logger.critical(logger critical message)

技术分享

logging库提供了多个组件:

  Logger对象提供应用程序可直接使用的接口

  Handler发送日志到适当的目的地

  Filter提供了过滤日志信息的方法

  Formatter指定日志显示格式。

 

Python日志logging模块

标签:div   creat   ctime   文件名   ima   调用   线程   同步   style   

原文地址:http://www.cnblogs.com/xiaoyaz/p/7625685.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!