logging配置文件

一.使用到的模块:

logging.config

官方文档:

https://docs.python.org/3/library/logging.config.html

非官方文档(中文版):

http://python.usyiyi.cn/translate/python_352/library/logging.config.html

  1. 配置文件长什么样:

    官方: 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子类可以用来表示详细/概要的异常回溯。

 

 

 

  1. 配置文件写好之后怎么用?

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的更多相关文章

  1. logging日志模块、配置字典

    logging日志模块 知识点很多 但是需要掌握的很少(会用即可) import logging # 日志有五个等级(从上往下重要程度不一样) # logging.debug('debug级别') # ...

  2. python logging 日志模块的配置和使用

    import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s[line:%(line ...

  3. 0x02 Python logging模块利用配置加载logger

    目录 logging模块利用配置加载logger 方式一模板:logging.config.dictConfig(config_dict) logging模块利用配置加载logger logging. ...

  4. 转 使用Python的logging.config.fileConfig配置日志

    Python的logging.config.fileConfig方式配置日志,通过解析conf配置文件实现.文件 logglogging.conf 配置如下: [loggers]keys=root,f ...

  5. python 自动化之路 logging日志模块

    logging 日志模块 http://python.usyiyi.cn/python_278/library/logging.html 中文官方http://blog.csdn.net/zyz511 ...

  6. logging日志模块,四种方式

    1.最简单的用法 import logging logging.error("hah") logging.info("hah") logging.debug(& ...

  7. 包,logging日志模块,copy深浅拷贝

    一 包 package 包就是一个包含了 __init__.py文件的文件夹 包是模块的一种表现形式,包即模块 首次导入包: 先创建一个执行文件的名称空间 1.创建包下面的__init__.py文件的 ...

  8. python的logging日志模块(二)

    晚上比较懒,直接搬砖了. 1.简单的将日志打印到屏幕   import logging logging.debug('This is debug message') logging.info('Thi ...

  9. Python 日志打印之logging.config.dictConfig使用总结

    日志打印之logging.config.dictConfig使用总结 By:授客 QQ:1033553122 #实践环境 WIN 10 Python 3.6.5 #函数说明 logging.confi ...

随机推荐

  1. 去除input 在 webkit内核浏览器 选择历史时,有一个黄色背景

    input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset; } http://www.imooc.com/arti ...

  2. BZOJ 5020 [THUWC2017]Drown in the math ocean (LCT+求导)

    题目大意: 太长了略 洛谷题面传送门 嗯,数学题 感觉考试要是出这种题我就死翘翘了[逃 不用想都知道要$LCT$维护断边连边,但询问该如何处理呢 利用题目给出的公式 $f(x)=\sum_{i=0}^ ...

  3. Hive学习:Hive连接JOIN用例详解

    1 准备数据: 1.1 t_1 01 张三 02 李四 03 王五 04 马六 05 小七 06 二狗 1.2 t_2 01 11 03 33 04 44 06 66 07 77 08 88 1.3 ...

  4. LAMP自动安装脚本

    #!/bin/bash # 功能描述:LAMP自动安装脚本 # 初始化 if [ "$(cat /etc/system-release | awk '{print $(NF-1)}' | a ...

  5. 为什么要清除BSS段

    如题,看到uboot里有清除BSS段的代码,想知道这样做的目的是什么啊,BSS段默认值本来就是0了啊,希望大哥大姐们能详细的解说下,谢谢了 bss 段描述了未初始化的全局变量和静态变量的大小等信息,但 ...

  6. python_字符串常用操作

    name = "monicao"name.capitalize() #首字母大写print(name.capitalize()) print(name.count("o& ...

  7. LeetCode 11. Container With Most Water 单调队列

    题意 Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai ...

  8. %02x与%2x之间的区别

    输出最小宽度用十进制整数来表示输出的最少位数.若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0(当最小宽度数值以0开头时). X 表示以十六进制形式输出02表示不足两 ...

  9. 2016 10 28考试 dp 乱搞 树状数组

    2016 10 28 考试 时间 7:50 AM to 11:15 AM 下载链接: 试题 考试包 这次考试对自己的表现非常不满意!! T1看出来是dp题目,但是在考试过程中并没有推出转移方程,考虑了 ...

  10. ASP.NET-AuthorizeAttribute做身份验证操作

    代码顺序为:OnAuthorization-->AuthorizeCore-->HandleUnauthorizedRequest 如果AuthorizeCore返回false时,才会走H ...