以前看过,但一直认为很复杂。象 NewEdit 都是自已写的日志处理。其实 logging 做得很好,也不是很复杂,只要看明白例子。在新发布的crawl 2.1.1中使用了logging,下面把它的使用代码写出来,很简单:
1 def initlog():
2 import logging
3
4 logger = logging.getLogger()
5 hdlr = logging.FileHandler(logfile)
6 formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
7 hdlr.setFormatter(formatter)
8 logger.addHandler(hdlr)
9 logger.setLevel(logging.NOTSET)
10
11 return logger
这个函数用来返回一个日志对象。
第4行生成一个日志对象,可以带一个名字,可以缺省。
第5行生成一个Handler。logging支持许多Handler,象FileHandler, SocketHandler, SMTPHandler等,我由于要写文件就使用了FileHandler。logfile是一个全局变量,它就是一个文件名,如:'crawl.log'。
第6行生成一个格式器,用于规范日志的输出格式。如果没有这行代码,那么缺省的格式就是:"%(message)s"。也就是写日志时,信息是什么日志中就是什么,没有日期,没有信息级别等信息。logging支持许多种替换值,详细请看Formatter的文档说明。这里有三项:时间,信息级别,日志信息。
第7行将格式器设置到处理器上。
第8行将处理器加到日志对象上。
第9行设置日志信息输出的级别。logging提供多种级别的日志信息,如:NOTSET, DEBUG, INFO, WARNING, ERROR, CRITICAL等。每个级别都对应一个数值。如果不执行此句,缺省为30(WARNING)。可以执行:logging.getLevelName(logger.getEffectiveLevel())来查看缺省的日志级别。日志对象对于不同的级别信息提供不同的函数进行输出,如:info(), error(), debug()等。当写入日志时,小于指定级别的信息将被忽略。因此为了输出想要的日志级别一定要设置好此参数。这里我设为NOTSET(值为0),也就是想输出所有信息。
有了日志对象,输出就非常简单了:
logger.error(message)
logger.info(message)
分享到:
相关推荐
主要介绍了Python3.6日志Logging模块简单用法,结合实例形式分析了Python3.6环境下日志Logging模块设置格式、文件流输出相关操作技巧,需要的朋友可以参考下
python logging模块主要是python提供的通用日志系统,使用的方法其实挺简单的,这块就不多介绍。下面主要会讲到在使用python logging模块的时候,涉及到多个python文件的调用,而每个文件设置了对应的logging方式...
主要介绍了Python 日志logging模块用法,结合简单实例形式分析了Python 日志logging模块功能、原理及日志输出到控制台与文件的相关操作技巧,需要的朋友可以参考下
在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这时候print就不大方便了,所以Python引入了logging模块来记录我想要的...
首先介绍下怎么发现的吧, 线上的项目日志是通过 logging 模块打到 syslog 里, 跑了一段时间后发现 syslog 的 UDP 连接超过了 8W, 没错是 8 W. 主要是 logging 模块用的不对 我们之前有这么一个需求, 就是针对每一个...
本文实例讲述了Python logging模块用法。分享给大家供大家参考,具体如下: logging模块 函数式简单配置 import logging logging.debug('debug message') logging.info('info message') logging.warning('warning ...
2)使用logging模块的组件(loggers,handlers,filters,formatters) 简单示例 import json import logging class JsonFilter(logging.Filter): #此处定义字段的默认值,如果打印信息时不设置对应字段,则为默
导入logging模块使用以下命令: import logging logging模块的用法: 1.简单的将日志打印到屏幕上 import logging logging.debug("This is debug message") logging.info("This is info message") logging.warning...
简单来讲就是,我们通过记录和分析日志可以了解一个系统或软件程序运行情况是否正常,也可以在应用程序出现故障时快速定位问题。比如,做运维的同学,在接收到报警或各种问题反馈后,进行问题排查时通常都会先去看...
简单使用 最开始,我们用最短的代码体验一下logging的基本功能。 import logging logger = logging.getLogger() logging.basicConfig() logger.setLevel('DEBUG') logger.debug('logsomething') #输出 out>>DEBG:...
logging模块不只是能记录log,还能发送邮件,使用起来非常简单方便 #coding=utf-8 ''''' Created on 2016-3-21 @author: Administrator ''' import logging, logging.handlers class EncodingFormatter(logging....
格里芬+伐木 NuGet软件包GriffinPlus库记录 GriffinPlus.Lib.Logging.Collections GriffinPlus.Lib.Logging.LocalLogServicePipelineStage GriffinPlus.Lib.Logging.LogFile总览Griffin +日志记录是一种简单但模块化...
这个简单的日志记录模块是对以下内容的改进: 可以按名称创建和检索多个记录器(如Python) 如果在终端中使用Matlab,则不同的日志记录级别会以不同的颜色显示 每个记录器的输出可以定向到标准输出和/或文件。 每个...
logging模块支持将日志信息保存到不同的目标域中,如:保存到日志文件中;以邮件的形式发送日志信息;以http get或post的方式提交日志到web服务器;以windows事件的形式记录等等。这些日志保存方式可以组合使用,每...
第一个代码任务简单实现多模块项目的个人解决方案,以日志记录和递归二进制搜索为例。
执行结果:默认情况下,logging模块将日志打印到屏幕上(stdout),日志级别为WARNING(即只有日志级别高于WARNING的日志信息才会输出),日志格式如下图所示:1.1日志级别1.2简单配置执行结果:标准输出(屏幕)未显示...
click_logging:我在项目中使用的是一个简单的基于单击的日志记录模块,而不是std。记录模块