logging模块的学习记录

参考官方文档

日志级别等级

  • critical > error > warning > info > debug > notset
Level Numeric value
CRITICAL 50
ERROR 40
WARNING 30
INFO 20
DEBUG 10
NOTSET 0
  • 默认日志级别,为warning级别,也就是说warning级别以上的才会打印输出,而info级别在默认情况下是不会输出的。
  • logging库提供了多个组件:Logger、Handler、Filter、Formatter。Logger对象提供应用程序可直接使用的接口,Handler发送日志到适当的目的地,Filter提供了过滤日志信息的方法,Formatter指定日志显示格式。

两种方法生成日志文件:

1. 使用logging.basicConfig( )接口

通过设置filename等参数,可以将生成的日志,保存在filename指定的文件中,如果不指定filename参数,则会根据日志输出级别,将日志信息通过控制台打印出来。

# 文件名保存为 ‘‘ log.py ’’
import logging  

LOGGER_LEVEL = logging.INFO    #设置用户信息级别打印输出
logging.basicConfig(
                                level=LOGGER_LEVEL,  
                                format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',    
                                datefmt='%a, %d %b %Y %H:%M:%S',
                                filename='test.log',
                                filemode='a'
                        )
logger = logging.getLogger(__file__)    

logging.debug('debug message')  
logging.info('info message')  
logging.warning('warning message')  
logging.error('error message')  
logging.critical('critical message') 

运行结果:

INFO:root:info message
WARNING:root:warning message
ERROR:root:error message
CRITICAL:root:critical message

logging.basicConfig()接口参数说明

level=LOGGER_LEVEL, # 定义打印输出级别

  • level : 指定打印输出级别,有以下几个级别:
  • logging.CRITICAL,致命的
  • logging.ERROR, 错误
  • logging.WARNING,警告
  • logging.INFO, 用户信息
  • logging.DEBUG, 调试
  • logging.NOSET 不设置

format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', #设置打印输出格式 format可以输出很多有用信息,如上例所示: |%(...)s 输出为字符串 | %(...)d 输出为整数

  • %(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: 打印日志信息

datefmt='%a, %d %b %Y %H:%M:%S', # 设置asctime,也就是日期时间的打印格式

filename='test.log', # log保存的文件名称为 test.log

filemode='a' # 文件打开模式,‘a’就是追加,是默认参数,跟文件操作一样

2. 通过创建logger实例,实现文件保存日志和控制台打印输出日志

logger = logging.getLogger("name") #创建一个logger实例

# 文件名保存为 ‘‘ log1.py ’’
import logging
import sys

# 获取logger实例,如果参数为空则返回root logger
logger = logging.getLogger("name")

# 给实例指定日志的最低输出级别,默认为WARNING级别
logger.setLevel(logging.INFO)

# 指定logger输出格式,可以同时作用于文件日志和控制台日志的输出格式
formatter = logging.Formatter('%(asctime)s %(filename)s %(levelname)-8s: %(message)s')

# 文件日志,指定文件名称和保存日志的格式
file_handler = logging.FileHandler("test1.log")
file_handler.setFormatter(formatter)          # 可以通过setFormatter指定输出格式
# file_handler.formatter = formatter  # 也可以直接给formatter赋值

# 控制台日志,指定控制台输出格式
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(formatter)
# console_handler.formatter = formatter  # 也可以直接给formatter赋值

# 为logger实例添加的日志处理器,文件处理器和控制台处理器
logger.addHandler(file_handler)
logger.addHandler(console_handler)

# 输出不同级别的log
logger.debug('this is debug info')
logger.info('this is information')
logger.warn('this is warning message')
logger.error('this is error message')
logger.critical('this is critical message')

输出结果如下:

2018-05-04 10:34:10,194 log1.py INFO    : this is information
2018-05-04 10:34:10,195 log1.py WARNING : this is warning message
2018-05-04 10:34:10,195 log1.py ERROR   : this is error message
2018-05-04 10:34:10,195 log1.py CRITICAL: this is critical message

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,265评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,274评论 1 288
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,087评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,479评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,782评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,218评论 1 207
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,594评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,316评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,955评论 1 237
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,274评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,803评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,177评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,732评论 3 229
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,953评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,687评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,263评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,189评论 2 258