python模块 ---logging模块
一 简单示例
import logging
logger = logging.getLogger() # 生成一个日志对象
# logfile是一个全局变量,它就是一个文件名,如:'crawl.log'
logfile = 'test.log'
# 生成一个Handler。logging支持许多Handler,
# 象FileHandler, SocketHandler, SMTPHandler等,我由于要写
# 文件就使用了FileHandler。
hdlr = logging.FileHandler('sendlog.txt')
# 成一个格式器,用于规范日志的输出格式。如果没有这行代码,那么缺省的
# 格式就是:"%(message)s"。也就是写日志时,信息是什么日志中就是什么,
# 没有日期,没有信息级别等信息。logging支持许多种替换值,详细请看
# Formatter的文档说明。这里有三项:时间,信息级别,日志信息
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
# 将格式器设置到处理器上
hdlr.setFormatter(formatter)
# 将处理器加到日志对象上
logger.addHandler(hdlr)
# 设置日志信息输出的级别。logging提供多种级别的日志信息,如:NOTSET,
# DEBUG, INFO, WARNING, ERROR, CRITICAL等。每个级别都对应一个数值。
# 如果不执行此句,缺省为30(WARNING)。可以执行:logging.getLevelName
# (logger.getEffectiveLevel())来查看缺省的日志级别。日志对象对于不同
# 的级别信息提供不同的函数进行输出,如:info(), error(), debug()等。当
# 写入日志时,小于指定级别的信息将被忽略。因此为了输出想要的日志级别一定
# 要设置好此参数。这里我设为NOTSET(值为0),也就是想输出所有信息
logger.setLevel(logging.NOTSET)
二 使用配置文件
实际运用中,我们可能需要将日志的配置信息独立出来,这时候我们就需要用到logging的另一个功能:
test.py
# test.py
import logging
import logging.config logging.config.fileConfig("logging.conf") #使用logger_example
logger = logging.getLogger("example") #"application" code
logger.debug("debug message")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
logger.critical("critical message")
#默认的调用[logger_root],也就是说如果logger名字不是conf文件中已有的,那么使用logger_root的相关配置信息
logHello = logging.getLogger("hello")
logHello.info("Hello world!")
logging.conf配置文件:
# logging.conf #1. 建立logger
[loggers]
keys=root,example #2. 建立handler---输出位置
[handlers]
keys=consoleHandler,rotateFileHandler #终端输出
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,) #文件输出
[handler_rotateFileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('ip_place.log', 'a', 200000, 9) #3. 建立formatters
[formatters]
keys=simpleFormatter [formatter_simpleFormatter]
format=[%(asctime)s](%(levelname)s)%(name)s : %(message)s #4. 建立logger与handler的联系
[logger_root]
level=DEBUG
handlers=consoleHandler [logger_example]
level=DEBUG
handlers=rotateFileHandler
qualname=example
propagate=0
|
使用python的logging模块 一、从一个使用场景开始
复制代码 运行后, 在控制台和日志文件都有一条日志:
复制代码 Logger.addHandler(hdlr)
复制代码 三、关于root logger以及logger的父子关系
复制代码 输出如下:
复制代码 可见, 孩子logger没有任何handler,所以对消息不做处理。但是它把消息转发给了它的父 |
python模块 ---logging模块的更多相关文章
- Python之logging模块
一.引言 之前在写一些小程序的时候想把日志内容打到文件中,所以就自己写了一个logger.py的程序,如下: #!/usr/bin/python # -*- coding=utf-8 -*- impo ...
- python的logging模块
python提供了一个日志处理的模块,那就是logging 导入logging模块使用以下命令: import logging logging模块的用法: 1.简单的将日志打印到屏幕上 import ...
- python的logging模块之读取yaml配置文件。
python的logging模块是用来记录应用程序的日志的.关于logging模块的介绍,我这里不赘述,请参见其他资料.这里主要讲讲如何来读取yaml配置文件进行定制化的日志输出. python要读取 ...
- Python全栈之路----常用模块----logging模块
很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,loggin ...
- python中logging模块的用法
很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,loggin ...
- Python模块——logging模块
logging模块简介 logging模块定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统.logging模块是Python的一个标准库模块, 由标准库模块提供日志记录API的关键好处是 ...
- python基础--logging模块
很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,loggin ...
- Python中logging模块的基本用法
在 PyCon 2018 上,Mario Corchero 介绍了在开发过程中如何更方便轻松地记录日志的流程. 整个演讲的内容包括: 为什么日志记录非常重要 日志记录的流程是怎样的 怎样来进行日志记录 ...
- Python日志(logging)模块,shelve,sys模块
菜鸟学python第十七天 1.logging 模块 logging模块即日志记录模块 用途:用来记录日志 为什么要记录日志: 为了日后复查,提取有用信息 如何记录文件 直接打开文件,往里写东西 直接 ...
随机推荐
- js、html中的单引号、双引号及其转义使用
js.html中的单引号.双引号及其转义使用在js中对相关字符做判断或取值的时候很多情况下都会用到这些. ------ 在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:<in ...
- OpenGL-----深度测试,剪裁测试、Alpha测试和模板测试
片断测试其实就是测试每一个像素,只有通过测试的像素才会被绘制,没有通过测试的像素则不进行绘制.OpenGL提供了多种测试操作,利用这些操作可以实现一些特殊的效果.我们在前面的课程中,曾经提到了“深度测 ...
- eclipse没有(添加)"Dynamic Web Project"选项的方法【转载】
第一种方法: 你安装的是专门开发java项目的,而Dynamic Web Project 属于J2EE技术,所以你要专门下载一个集成了J2EE插件的Eclipse,(eclipse-jee-heli ...
- ios 集合总结
NSArray 用于对象有序集合(相当于是数组) 它有两个限制: 1. 它只能存储objective-c的对象,但不能存储C中的基本数据类型,如int , float, enum, struct等. ...
- 转:Selenium Grid深入学习
应网友要求写一个用Selenium Grid控制多系统多浏览器并行执行test case的例子. 因为我这里有两台机子,我打算这样演示: 一台机子启动一个作为主点节的hub 和 一个作为次节点的hub ...
- mytest 截图
- 一个opencv 博客 大量文章(老版本编写C )
http://blog.csdn.net/Augusdi/article/category/747412
- SVM阅读资料
1,Andrew Ng机器学习公开课笔记 -- 支持向量机 2,http://blog.pluskid.org/?page_id=683 3,支持向量机SVM(一) 4,机器学习中的算法(2)-支持向 ...
- EF在单例模式及C/S方式开发时,操作数据对象以后如果发生异常,要做善后工作。
try{ 删除或修改 }catch { _DBContext.Refresh(RefreshMode.StoreWins, entity); }
- HDU 1204 基础DP 非连续字段的最大和
其实这个感觉是一眼题,只不过我真心太菜了. 题目已经告诉你了,有m段,n个数字,那么我们就只需要dp[m][n]即可,然后最后的答案肯定是dp[m][]的那一行,所以其他行都是没有用的,因为我们可以把 ...