操作系统服务:logging日志记录模块
2017-08-14 00:00
351 查看
http://blog.csdn.net/pipisorry/article/details/45151825
许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪。
在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4cpp。
而在python中,我们不需要第三方的日志组件,因为它已经为我们提供了简单易用、且功能强大的日志模块:logging。
logging模块支持将日志信息保存到不同的目标域中,如:保存到日志文件中;以邮件的形式发送日志信息;以http get或post的方式提交日志到web服务器;以windows事件的形式记录等等。这些日志保存方式可以组合使用,每种方式可以设置自己的日志级别以及日志格式。
16.6.1. Logger Objects
16.6.2. Logging Levels
16.6.3. Handler Objects
16.6.4. Formatter Objects
16.6.5. Filter Objects
16.6.6. LogRecord Objects
16.6.7. LogRecord attributes
16.6.8. LoggerAdapter Objects
16.6.9. Thread Safety
16.6.10. Module-Level Functions
16.6.11. Module-Level Attributes
16.6.12. Integration with the warnings module
16.7.
16.7.1. Configuration functions
16.7.2. Configuration dictionary schema
16.7.2.1. Dictionary Schema Details
16.7.2.2. Incremental Configuration
16.7.2.3. Object connections
16.7.2.4. User-defined objects
16.7.2.5. Access to external objects
16.7.2.6. Access to internal objects
16.7.2.7. Import resolution and custom importers
16.7.3. Configuration file format
16.8.
16.8.1. StreamHandler
16.8.2. FileHandler
16.8.3. NullHandler
16.8.4. WatchedFileHandler
16.8.5. BaseRotatingHandler
16.8.6. RotatingFileHandler
16.8.7. TimedRotatingFileHandler
16.8.8. SocketHandler
16.8.9. DatagramHandler
16.8.10. SysLogHandler
16.8.11. NTEventLogHandler
16.8.12. SMTPHandler
16.8.13. MemoryHandler
16.8.14. HTTPHandler
16.8.15. QueueHandler
16.8.16. QueueListener
皮皮blog
logging模块的基本使用
logging使用的基本格式如下
简单例子1
四个主要的组件
logger: 日志类,应用程序往往通过调用它提供的api来记录日志;
handler: 对日志信息处理,可以将日志发送(保存)到不同的目标域中;
filter: 对日志信息进行过滤;
formatter:日志的格式化;
日志级别
在记录日志时, 日志消息都会关联一个级别("级别"本质上是一个非负整数)。系统默认提供了6个级别,它们分别是:
可以给日志对象(Logger Instance)设置日志级别,低于该级别的日志消息将会被忽略,也可以给Hanlder设置日志级别,对于低于该级别的日志消息, Handler也会忽略。
皮皮blog
logging模块中的常用函数
kwargs 支持如下几个关键字参数
filename :日志文件的保存路径。如果配置了些参数,将自动创建一个FileHandler作为Handler;
filemode :日志文件的打开模式。 默认值为'a',表示日志消息以追加的形式添加到日志文件中。如果设为'w', 那么每次程序启动的时候都会创建一个新的日志文件;
format :设置日志输出格式;
datefmt :定义日期格式;
level :设置日志的级别,对低于该级别的日志消息将被忽略;
stream :设置特定的流用于初始化StreamHandler;
logging.getLogger([name])
创建Logger对象。日志记录的工作主要由Logger对象来完成。在调用getLogger时要提供Logger的名称(注:多次使用相同名称来调用getLogger,返回的是同一个对象的引用。)
Logger实例之间有层次关系,这些关系通过Logger名称来体现,如:
p = logging.getLogger("root")
c1 = logging.getLogger("root.c1")
c2 = logging.getLogger("root.c2")
Note:
1. p是父logger, c1,c2分别是p的子logger。c1, c2将继承p的设置。
2. 如果省略了name参数, getLogger将返回日志对象层次关系中的根Logger。
logging.shutdown()
当不再使用日志系统的时候,调用该方法,它会将日志flush到对应的目标域上。一般在系统退出的时候调用。
皮皮blog
Logger对象方法和属性
通过调用logging.getLogger(name)来创建,有如下常用的方法和属性:
Logger.addFilter(filt)
[
Python模块学习 ---- logging 日志记录(一)]
from:http://blog.csdn.net/pipisorry/article/details/45151825
许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪。
在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4cpp。
而在python中,我们不需要第三方的日志组件,因为它已经为我们提供了简单易用、且功能强大的日志模块:logging。
logging模块支持将日志信息保存到不同的目标域中,如:保存到日志文件中;以邮件的形式发送日志信息;以http get或post的方式提交日志到web服务器;以windows事件的形式记录等等。这些日志保存方式可以组合使用,每种方式可以设置自己的日志级别以及日志格式。
logging模块主要函数
16.6.logging— Logging facility for Python
16.6.1. Logger Objects
16.6.2. Logging Levels
16.6.3. Handler Objects
16.6.4. Formatter Objects
16.6.5. Filter Objects
16.6.6. LogRecord Objects
16.6.7. LogRecord attributes
16.6.8. LoggerAdapter Objects
16.6.9. Thread Safety
16.6.10. Module-Level Functions
16.6.11. Module-Level Attributes
16.6.12. Integration with the warnings module
16.7.
logging.config— Logging configuration
16.7.1. Configuration functions
16.7.2. Configuration dictionary schema
16.7.2.1. Dictionary Schema Details
16.7.2.2. Incremental Configuration
16.7.2.3. Object connections
16.7.2.4. User-defined objects
16.7.2.5. Access to external objects
16.7.2.6. Access to internal objects
16.7.2.7. Import resolution and custom importers
16.7.3. Configuration file format
16.8.
logging.handlers— Logging handlers
16.8.1. StreamHandler
16.8.2. FileHandler
16.8.3. NullHandler
16.8.4. WatchedFileHandler
16.8.5. BaseRotatingHandler
16.8.6. RotatingFileHandler
16.8.7. TimedRotatingFileHandler
16.8.8. SocketHandler
16.8.9. DatagramHandler
16.8.10. SysLogHandler
16.8.11. NTEventLogHandler
16.8.12. SMTPHandler
16.8.13. MemoryHandler
16.8.14. HTTPHandler
16.8.15. QueueHandler
16.8.16. QueueListener
皮皮blog
logging模块的基本使用
logging使用的基本格式如下
import logging logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
简单例子1
import logging logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), level = logging.DEBUG) logging.debug('this is a message')运行上面例子的代码,将会在程序的根目录下创建一个log.txt文件,打开该文件,里面有一条日志记录:"DEBUG:root:this is a message"。
四个主要的组件
logger: 日志类,应用程序往往通过调用它提供的api来记录日志;
handler: 对日志信息处理,可以将日志发送(保存)到不同的目标域中;
filter: 对日志信息进行过滤;
formatter:日志的格式化;
日志级别
在记录日志时, 日志消息都会关联一个级别("级别"本质上是一个非负整数)。系统默认提供了6个级别,它们分别是:
级别 | 对应的值 |
---|---|
CRITICAL | 50 |
ERROR | 40 |
WARNING | 30 |
INFO | 20 |
DEBUG | 10 |
NOTSET | 0 |
皮皮blog
logging模块中的常用函数
logging.basicConfig([**kwargs]):
为日志模块配置基本信息。kwargs 支持如下几个关键字参数
filename :日志文件的保存路径。如果配置了些参数,将自动创建一个FileHandler作为Handler;
filemode :日志文件的打开模式。 默认值为'a',表示日志消息以追加的形式添加到日志文件中。如果设为'w', 那么每次程序启动的时候都会创建一个新的日志文件;
format :设置日志输出格式;
datefmt :定义日期格式;
level :设置日志的级别,对低于该级别的日志消息将被忽略;
stream :设置特定的流用于初始化StreamHandler;
import logging logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), / level = logging.WARN, filemode = 'w', format = '%(asctime)s - %(levelname)s: %(message)s') logging.debug('debug') #被忽略 logging.info('info') #被忽略 logging.warning('warn') logging.error('error') #----- 结果 #2009-07-13 21:42:15,592 - WARNING: warn #2009-07-13 21:42:15,640 - ERROR: error
logging.getLogger([name])
创建Logger对象。日志记录的工作主要由Logger对象来完成。在调用getLogger时要提供Logger的名称(注:多次使用相同名称来调用getLogger,返回的是同一个对象的引用。)
Logger实例之间有层次关系,这些关系通过Logger名称来体现,如:
p = logging.getLogger("root")
c1 = logging.getLogger("root.c1")
c2 = logging.getLogger("root.c2")
Note:
1. p是父logger, c1,c2分别是p的子logger。c1, c2将继承p的设置。
2. 如果省略了name参数, getLogger将返回日志对象层次关系中的根Logger。
logging.setLoggerClass(klass)
logging.getLoggerClass()
获取/设置日志类型。用户可以自定义日志类来代替系统提供的logging.Logger类。logging.getLevelName(lvl)
获取日志级别对应的名称。logging.shutdown()
当不再使用日志系统的时候,调用该方法,它会将日志flush到对应的目标域上。一般在系统退出的时候调用。
皮皮blog
Logger对象方法和属性
通过调用logging.getLogger(name)来创建,有如下常用的方法和属性:
Logger.setLevel(lvl):
设置日志的级别。对于低于该级别的日志消息将被忽略。setLevel方法的例子:#coding=gbk import logging logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), level = logging.DEBUG) log = logging.getLogger('root.test') log.setLevel(logging.WARN) #日志记录级别为WARNNING log.info('info') #不会被记录 log.debug('debug') #不会被记录 log.warning('warnning') log.error('error')
Logger.debug(msg [ ,*args [, **kwargs]])
记录DEBUG级别的日志信息。参数msg是信息的格式,args与kwargs分别是格式参数。import logging logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), level = logging.DEBUG) log = logging.getLogger('root') log.debug('%s, %s, %s', *('error', 'debug', 'info')) log.debug('%(module)s, %(info)s', {'module': 'log', 'info': 'error'})
Logger.info(msg[ , *args[ , **kwargs]] )
Logger.warnning(msg[ , *args[ , **kwargs]] )
Logger.error(msg[ , *args[ , **kwargs]] )
Logger.critical(msg[ , *args[ , **kwargs]] )
记录相应级别的日志信息。参数的含义与Logger.debug一样。Logger.log(lvl, msg[ , *args[ , **kwargs]] )
记录日志,参数lvl用户设置日志信息的级别。参数msg, *args, **kwargs的含义与Logger.debug一样。Logger.exception(msg[, *args])
以ERROR级别记录日志消息,异常跟踪信息将被自动添加到日志消息里。Logger.exception通过用在异常处理块中,如:import logging logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), level = logging.DEBUG) log = logging.getLogger('root') try: raise Exception, 'this is a exception' except: log.exception('exception') #异常信息被自动添加到日志消息中
Logger.addFilter(filt)
Logger.removeFilter(filt)
添加/移除日志消息过滤器。Logger.addHandler(hdlr)
Logger.removeHandler(hdlr)
添加/移除日志消息处理器。Logger.makeRecord(name, lvl, fn, lno, msg, args, exc_info[, func, extra])
创建LogRecord对象。日志消息被实例为一个LogRecord对象,并在日志类内处理。[
Python模块学习 ---- logging 日志记录(一)]
from:http://blog.csdn.net/pipisorry/article/details/45151825
相关文章推荐
- 操作系统服务:logging日志记录模块
- Python模块学习:logging 日志记录
- Python模块学习 ---- logging 日志记录(一)
- Python模块学习 ---- logging 日志记录(一) - 成长的点滴,记录与分享 - 博客频道 - CSDN.NET
- 优雅地记录Python程序日志1:logging模块简介
- Python模块学习:logging 日志记录
- python:logging模块(记录打印日志)
- Python模块学习 ---- logging 日志记录(一)
- Python logging模块使用配置文件记录日志
- logging 模块记录日志
- Django 中使用 logging 模块记录系统日志
- Python模块学习 ---- logging 日志记录
- Python模块学习- logging 日志记录
- Python模块学习 ---- logging 日志记录(一)
- 使用python中logging模块记录日志
- python日志记录-logging模块
- Python模块学习 ---- logging 日志记录(一)
- Python模块学习 ---- logging 日志记录(一)
- 关于python logging模块日志记录与oss模块文件上传的问题
- Python模块学习 ---- logging 日志记录(一)