python日志记录-logging模块
1、logging模块日志级别
使用logging模块简单示例:
>>>import logging
>>>logging.debug("this's a test logging")
>>>loggin.info("still a test logging")
# 默认情况下以上两行没有输出,需要指定日志级别才行
>>>logging.warn("it's waring!!!")
logging模块日志级别:
| 日志级别 | 值 |
|---|---|
| CRITICAL | 50 |
| ERROR | 40 |
| WARNING | 30 |
| INFO | 20 |
| DEBUG | 10 |
| UNSET | 0 |
对于某个级别的日志消息,只有当处理器和日志记录器配置为可以发布该级别(或者更高级别的消息时),才会发布这个日志消息。例如,如果一个消息的级别是CRITICAL,日志配置的级别是ERROR,这个消息就会发出(50>40)。如果这个消息是WARNING,而日志记录器设置为的是ERROR,这个消息就不会发出(30<40).
2、logging模块基本理解使用
不同的优先级对应不同的函数:logging.debug,logging.warn等等
一个或多个Logger对象,主要通过它们使用模块
把消息写入终端或文件、数据库或其他地方的handler
创建输出的formatter
基于输入进行筛选的过滤器
一、设置logging日志默认优先级:
默认级别是WARNING,设置日志默认优先级为DEBUG
>>>import logging
>>>logging.basicConfig(level=logging.DEBUG)
二、创建logger对象
每个logger对象都有一个名称,比如创建一个test的logger
>>>import logging
>>>logging.basicConfig(level='DEBUG')
>>>logger = longgin.getLogger('test')
>>>logger.debug('the great gates!')
DEBUG:test:the great gates!
三、使用Handler把消息输出到日志文件
>>>import logging
>>>logging.basicConfig(level='DEBUG', filename='test.log')
>>>logger = logging.getLogger('tx')
>>>logger.war('xxxxssss')
日志写入了文件test.log,调用basicConfig()时使用的filename参数会创建一个FileHandler并对logger进行设置,logging模块至少包含15种handler,比如电子邮件、web服务器、屏幕和文件
四、控制消息的格式
>>>import logging
>>>fmt = '%(asctime)s %(levelname)s %(lineno)s %(message)s'
>>>logging.basicConfig(lebel='DEBUG', filename='test.log', format=fmt)
>>>logger = logging.getLogger('xx')
>>>logger.warn('where is loggggg')
2016-5-5 23:22:11,877 WARN 1 where is loggggg
logging模块可以识别出fmt格式化字符串中的变量名,asctime、levelname、lineo、message,都是内置变量,也可以创建自定义变量。
3、日志文件旋转
要想每次运行程序的时候创建一个新文件,可以向basicConfig()的参数filemode传入值"w"。不过最好不要采用这种方式管理日志文件,更好的做法是使用一个RotatingFileHandler,它会自动创建新文件,同时保留原来的文件.
>>>import glob
>>>import logging
>>>import logging.handlers
>>>logger = logging.getLogger('mylogger')
>>>logger.setLevel(logging.DEBUG)
>>>log_filename='test.log'
>>>handler = logging.handlers.RotatingFileHandler(log_filename, maxBytes=100, backupCount=5)
>>>logger.addHandler(handler)
# 查看滚动生成的日志文件
for i in range(100):
logger.debug('i = %d' % i)
# 查看那些文件被创建
logfiles = glob.glob('%s *' % log_filename)
for filename in logfiles:
print filename
结果:
test.log
test.log.1
test.log.2
...
test.log.5
最新的文件总是test.log,每次达到大小限制时,就会后缀加.1重命名。现有的各个备份文件也会重命名,使后缀递增(.1变成.2,等等),.5文件会被删除
4、logging模块使用问题和实例
2、另外使用logger=logging.getLogger()进行实例化对象过程中,如果是继承父类的,仍然不会生效,由于logging.getLogger()是以"."作为不同层级的区分.当子类需要另外设置logging的配置时,要另外通过设置handler的方式,来避免父类的logging配置掩盖子类.
3、具体首先配置logger = logging.getLogger(__name__) "__name__"不能为空,为其他的参数也可以,如果为logger=logging.getLogger(),似乎子类配置的logger不会生效.
增加handler:
log_file = './test.log'
fmt = fmt = '%(asctime)s %(filename)s %(funcName)s %(levelname)s Line:%(lineno)s :%(message)s'
logger = logging.getLogger(__name__)
logger.level = logging.DEBUG
handlers = logging.FileHandler(log_file)
formatter = logging.Formatter(fmt)
handlers.formatter = formatter
loggers.addHandler(handlers) 使用logger:
logger.info('it's a test')
http://python.jobbole.com/84092/ [必看,深入浅出]
http://python.jobbole.com/82221/ [基础全面]
http://python.jobbole.com/81521/ [简单]
http://python.jobbole.com/81666/ [简单]
python日志记录-logging模块的更多相关文章
- Python日志输出——logging模块
Python日志输出——logging模块 标签: loggingpythonimportmodulelog4j 2012-03-06 00:18 31605人阅读 评论(8) 收藏 举报 分类: P ...
- Python的日志记录-logging模块的使用
一.日志 1.1什么是日志 日志是跟踪软件运行时所发生的事件的一种方法,软件开发者在代码中调用日志函数,表明发生了特定的事件,事件由描述性消息描述,同时还包含事件的重要性,重要性也称为级别或严重性. ...
- Python日志记录(Logging)
日志记录跟程序的测试相关,并且在大幅度更改程序内核时很有用,它可以帮助我们找到问题和错误的所在.日志记录基本上就是收集与程序运行有关的数据,这样可以在随后进行检查或者累计数据. 1.简单示例 在Pyt ...
- 日志记录——logging模块
Logging:日志记录是为了跟踪记录软件运行时,发生的事件,包括出错,提示信息等等.log日志级别:日志级别大小关系为:CRITICAL > ERROR > WARNING > I ...
- Python之日志处理 logging模块
Python之日志处理(logging模块) 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四 ...
- Python实战之logging模块使用详解
用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这时候print就不大方便了,所 ...
- Python中的logging模块就这么用
Python中的logging模块就这么用 1.日志日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICALDEBUG:详细的信息,通常只出现在诊断问题 ...
- 日志(logging模块)
1. 为什么要使用日志(作用) 在学习过程中,写一个小程序或小demo时,遇到程序出错时,我们一般会将一些信息打印到控制台进行查看,方便排查错误.这种方法在较小的程序中很实用,但是当你的程序变大,或是 ...
- Python自建logging模块
本章将介绍Python内建模块:日志模块,更多内容请从参考:Python学习指南 简单使用 最开始,我们用最短的代码体验一下logging的基本功能. import logging logger = ...
随机推荐
- (转)C# WinForm中 获得当前鼠标所在控件 或 将窗体中鼠标所在控件名显示在窗体标题上
原文地址:http://www.cnblogs.com/08shiyan/archive/2011/04/14/2015758.html /********************** * 课题:将窗 ...
- BZOJ 2780: [Spoj]8093 Sevenk Love Oimaster( 后缀数组 + 二分 + RMQ + 树状数组 )
全部串起来做SA, 在按字典序排序的后缀中, 包含每个询问串必定是1段连续的区间, 对每个询问串s二分+RMQ求出包含s的区间. 然后就是求区间的不同的数的个数(经典问题), sort queries ...
- .Net之托管堆资源分配
托管堆分配资源: 一:进程初始化是,CLR要保留一块联系的地址空间,这个地址空间最初并没有对应的物理存储空间.这个地址空间就是托管堆.托管堆还维护着一个指针,我把它称为NextObjPtr.它指向下个 ...
- mysql 更新 语句中 的 safe_mode
在mysql5中,可以设置safe mode,比如在一个更新语句中UPDATE table_name SET bDeleted=0;执行时会错误,报:You are using safe update ...
- media queries(练习)
根据不同的窗口尺寸来选择使用不同的样式的示例 MAIN SUB 01 SUB 02
- 多主一从mysql replication同步表的大胆尝试.
能否将不同机器上的不同库中的表同步到同一个机器的同一个库中?表是不同的.而且对于slave这台机子来说,这些表只用来读. 同步不同库的表很简单了,用 replicate-do-table=db_n ...
- TensorFlow 深度学习笔记 Logistic Classification
Logistic Classification Github工程地址:https://github.com/ahangchen/GDLnotes 欢迎star,有问题可以到Issue区讨论 官方教程地 ...
- Selenium2Library使用Remote功能(转载并更新)
在selenium2library库的open browser中,除了我们常用的url,browser外,还有几个不常用的参数.如:remote_url的用法 1.下载selenium-server- ...
- why constrained regression and Regularized regression equivalent
problem 1: $\min_{\beta} ~f_\alpha(\beta):=\frac{1}{2}\Vert y-X\beta\Vert^2 +\alpha\Vert \beta\Vert$ ...
- 搭建本地Ubuntu 镜像服务器
一.需求分析 最近公司软件Team 有个需求是这样的:能不能在局域网搭建一个Ubuntu 镜像服务器, 这样作的好处是可以节省Ubuntu某些常用工具的安装时间. 二.部署过程 2.1 测试环境 目前 ...