logging.config模块---使用配置文件管理logger
logging配置文件
一.使用到的模块:
logging.config
官方文档:
https://docs.python.org/3/library/logging.config.html
非官方文档(中文版):
http://python.usyiyi.cn/translate/python_352/library/logging.config.html
- 配置文件长什么样:
官方: https://docs.python.org/3/library/logging.config.html#logging-config-fileformat
fileConfig()理解的配置文件格式基于configparser的功能。文件必需包含名为[loggers], [handlers] 和 [formatters]的节:如下表
|
[loggers] keys=root,log02,log03,log04,log05,log06,log07
[handlers] keys=hand01,hand02,hand03,hand04,hand05,hand06,hand07,hand08,hand09
[formatters] keys=form01,form02,form03,form04,form05,form06,form07,form08,form09 |
1:loggers节,以及字节的设置
根logger必需指定级别和handler列表。根logger节的例子给定如下。
|
[logger_root] level=NOTSET handlers=hand01 |
level可以是DEBUG, INFO, WARNING, ERROR, CRITICAL 或 NOTSET其中之一。NOTSET表示所有的消息都要记录,这只对根logger有效。级别值使用eval()在logging包空间演算得到。
handlers是逗号分隔的handler名字的列表,这些必需出现在[handlers]节中。这些名字必需出现在[handlers]节中,且在配置文件中有对应的节。
对于非根logger的logger来说,需要一些额外的信息。如下例所示。
|
[logger_parser] level=DEBUG handlers=hand01 propagate=1 qualname=compiler.parser |
level 和 handlers 的解读和根logger的一样,如果非根logger的级别为NOTSET,系统参考高层次的logger来决定logger的有效级别。
propagate为1表示将消息传递给高层次logger的handler,为0表示不传播。
qualname是logger在层次中的名字,应用通过该名字得到logger。
2:handler节,以及字节的设置
|
[handler_hand01] class=StreamHandler level=NOTSET formatter=form01 args=(sys.stdout,) |
class条目指示处理程序的类(如通过eval() 在logging包的命名空间)。
The level is interpreted as for loggers, and NOTSET is taken to mean 'log everything'.
formatter条目表示此处理程序的格式化程序的关键名称。如果为空,logging._defaultFormatter则使用默认格式化程序()。如果指定了一个名称,它必须出现在该[formatters]部分,并在配置文件中有相应的部分。
该args条目eval()在logging 程序包命名空间的上下文中使用时,是处理程序类的构造函数的参数列表。请参阅相关处理程序的构造函数,或下面的示例,了解如何构建典型的条目。
|
[handler_hand02] class=FileHandler level=DEBUG formatter=form02 args=('python.log', 'w')
[handler_hand03] class=handlers.SocketHandler level=INFO formatter=form03 args=('localhost', handlers.DEFAULT_TCP_LOGGING_PORT) |
3:formatters节,以及字节的设置
指定了格式化配置的节典型如下
|
[formatter_form01] format=F1 %(asctime)s %(levelname)s %(message)s datefmt= class=logging.Formatter |
format是整体的格式化字符串,
datefmt是strftime()兼容的日期/时间格式化字符串。如果为空,使用ISO8601格式,基本上等同于格式'%Y-%m-%d %H:%M:%S'。ISO8601格式在上述格式的末尾指明了毫秒,中间有个逗号。ISO8601格式的例子:2003-01-23 00:29:50,411。
class可选。它表示formatter类的名字(带点的模块和类名)。实例化Formatter子类时该选项很有用。Formatter子类可以用来表示详细/概要的异常回溯。
- 配置文件写好之后怎么用?
|
import logging import logging.config logging.config.fileConfig("logger.conf") logger = logging.getLogger("你当时写的qualname ") logger.debug('This is debug message') |
四:DEMO
|
#logging_setting.ini [loggers] keys=root,log01 #可以没有别的,但是必须得有root
[handlers] keys=hand01,hand02
[formatters] keys=form01,form02
[logger_root] level=NOTSET #可以不写 handlers=hand01 #可以为空
[logger_log01] level=ERROR handlers=hand01 propagate=0 qualname=test.test123
[handler_hand01] class=StreamHandler level=DEBUG formatter=form01 args=() #括号内可为空,但不可不写,括号内有一个内容时,必须在后面加",",以保证是tuple类型 除此之外,另外别的后面不允许有多余的逗号
[handler_hand02] class=FileHandler level=NOTSET formatter=form01 args=("test1.log","a",'utf-8')
[formatter_form01] format=F1 %(asctime)s %(levelname)s %(message)s datefmt= class=logging.Formatter
[formatter_form02] format= %(asctime)s %(levelname)s %(message)s datefmt= class=logging.Formatter |
import logging.config logging.config.fileConfig("logging_setting.ini") log1 = logging.getLogger("test.test123") log1.info("阿斯顿发") |
#args=()可以里面没有内容,但是只有一个内容的时候,后面必须加上逗号,表示是一个元组

logging.config模块---使用配置文件管理logger的更多相关文章
- logging日志模块、配置字典
logging日志模块 知识点很多 但是需要掌握的很少(会用即可) import logging # 日志有五个等级(从上往下重要程度不一样) # logging.debug('debug级别') # ...
- python logging 日志模块的配置和使用
import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s[line:%(line ...
- 0x02 Python logging模块利用配置加载logger
目录 logging模块利用配置加载logger 方式一模板:logging.config.dictConfig(config_dict) logging模块利用配置加载logger logging. ...
- 转 使用Python的logging.config.fileConfig配置日志
Python的logging.config.fileConfig方式配置日志,通过解析conf配置文件实现.文件 logglogging.conf 配置如下: [loggers]keys=root,f ...
- python 自动化之路 logging日志模块
logging 日志模块 http://python.usyiyi.cn/python_278/library/logging.html 中文官方http://blog.csdn.net/zyz511 ...
- logging日志模块,四种方式
1.最简单的用法 import logging logging.error("hah") logging.info("hah") logging.debug(& ...
- 包,logging日志模块,copy深浅拷贝
一 包 package 包就是一个包含了 __init__.py文件的文件夹 包是模块的一种表现形式,包即模块 首次导入包: 先创建一个执行文件的名称空间 1.创建包下面的__init__.py文件的 ...
- python的logging日志模块(二)
晚上比较懒,直接搬砖了. 1.简单的将日志打印到屏幕 import logging logging.debug('This is debug message') logging.info('Thi ...
- Python 日志打印之logging.config.dictConfig使用总结
日志打印之logging.config.dictConfig使用总结 By:授客 QQ:1033553122 #实践环境 WIN 10 Python 3.6.5 #函数说明 logging.confi ...
随机推荐
- ZBrush中遮罩的概念及使用
刚接触设计软件的小伙伴有可能不知道什么叫做遮罩,遮罩的概念是什么,顾名思义,遮罩就是可以将局部进行遮挡,使用它可以锁定和保护我们不想改变的模型位置,即被遮罩的部分将不参与任何编辑. ZBrush®软件 ...
- ZBrush软件特性之Draw
ZBrush®中的Draw绘制调色板包括了当前绘图的修改和控制工具,能改变工具大小.形状.强度.不透明度和其他一些功能. Draw Size(绘制大小):设置画笔的外形尺寸,调节ZBrush绘制笔刷圆 ...
- WiFi无线连接过程中有哪几个主要步骤?
WiFi无线连接过程中有哪几个主要步骤?[1]在使用WIFI功能时,经常性的操作是打开手机上的WiFi设备,搜索到心目中的热点,输入密码,联网成功,成功上网.这个看似简单的过程,背后却是隐藏着大量的无 ...
- 速学JavaScript!
什么是JavaScript? JavaScript是一种轻量级的脚本语言,也是一种嵌入式语言,是一种对象模型语言,简称JS:JavaScript的核心语法部分(语言本身)很精简,只包括两个部分: 基本 ...
- 路飞学城Python-Day40(第四模块复习题)
数据库 一.简答题 1.说说你所知道的MySQL数据库存储引擎,InnoDB存储引擎和MyISM存储引擎的区别? 1.InnoDB存储引擎(MySQL默认存储引擎),支持事务,其设计目标主要面向联机事 ...
- vue封装http请求
import axios from 'axios' import isObject from 'lodash/isObject' const http = function (api, data = ...
- K3内部表数据名称
在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单.----------------系统设置------------------------FStatus: ...
- elment表格分页
项目的时候遇到了一个分页的bug,经过分析Element源码之后找到了问题所在,现在把这个问题及解决方法记录下来. 项目中要实现的功能是用户选择查看表格的时候在任意页面点击查询,得到结果之后要展示的页 ...
- HDU 3117 Fibonacci Numbers( 矩阵快速幂 + 数学推导 )
链接:传送门 题意:给一个 n ,输出 Fibonacci 数列第 n 项,如果第 n 项的位数 >= 8 位则按照 前4位 + ... + 后4位的格式输出 思路: n < 40时位数不 ...
- SUSE Linux Enterprise 11 SP4系统安装过程 字符界面
首先开启虚拟机之后显示这个界面: (1) 进入之后显示下面界面,点击Installation安装. (2)进入Welcome界面,选择语言,默认Einglish(US)不需要改动:点击I Agree ...