Python/logging日志模块/配置文件形式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yyy72999/article/details/79610724

在一些微服务web服务中我们难免需要日志功能,用来记录一些用户登录记录,操作记录,以及一些程序的崩溃定位,执行访问定位等等;

Python内置 非常强大的日志模块 ==> logging 今天给大家分享一下以配置文件形式进行配置log日志 ;

  • Centos6.7
  • Python3.6
  • logging0.5.1.2

logging模块有三个比较重要的功能组件:

  1. loggers 配置文件可定义一些输出日志的appname
  2. handler 过滤器,比如设置日志的分隔大小,输出位置,日志文件创建等
  3. formatters 指定日志输出的格式

1: 创建一个文件,以.conf结尾 或以.ini结尾(PS: 其他的结尾没试过,你可以试试)

    vim log.conf    

2: 定义日志输出的APP名,指定过滤器这里用loggers功能

[loggers]               #固定写法
keys=root,error,info    #创建三个app名,root是父类,必需存在的

[logger_root]           #创建完的app名我们要定义一些规则,严格要求格式为"logger_appname"
level=DEBUG             #设置日志级别
qualname=root           #这里在"root"appname下可以不填,所有没获取get的情况下默认app名都是root
handlers=debugs         #设置指定过滤器,多个以逗号分隔,这个名字待会儿 我们会以固定格式"handler_(value)"创建

[logger_error]
level=ERROR
qualname=error          #除了root appname以外,定义的app名必须要设置这个属性,用于定义打印输出时候的app名
handlers=errors

[logger_info]
level=INFO
qualname=INFO
handlers=infos

3: 定义日志过滤器这里用handler功能

[handlers]                  #固定格式
keys=infos,errors,debugs    #定义过滤器名称,下面定义以handler_keysname格式定义,上面引用名称必须和keys一致

[handler_infos]             
class=FileHandler           #指定过滤器组件,详情请看官网,这个是以文件方式创建
level=INFO                  #设置级别
formatter=form01            #定义日志打印格式,下面会创建formatters,格式也是严格要求formatter_keysname 创建
args=('info.log','a')       #创建文件名字,以什么方式打开

[handler_errors] 
class=FileHandler
level=DEBUG
formatter=form02
args=('info1.log','a')

[handler_debugs] 
class=FileHandler
level=DEBUG
formatter=form02
args=('info1.log','a')

3: 定义日志输出格式,这里我们介绍最后一个组件formatters

[formatters]            #固定格式
keys=form01,form02      #定义名称,下面会引用格式同上

[formatter_form01]
format=%(asctime)s %(filename)s %(levelname)s  %(message)s  #年-月-日 时-分-秒,毫秒,文件名,级别名,消息信息
datefmt=%Y-%m-%d %H:%M:%S   #日期输出格式

[formatter_form02]
format=%(asctime)s %(filename)s %(levelname)s  %(message)s
datefmt=%Y-%m-%d %H:%M:%S

4: 具体程序引用

#!/usr/bin/env python
import logging 
import logging.config 
logging.config.fileConfig('log.conf')

logs = logging.getLogger('error')
logs.error('errorsssss')

欢迎下方留言,QQ:1301927919

猜你喜欢

转载自blog.csdn.net/yyy72999/article/details/79610724
今日推荐