在一些微服务
或web服务
中我们难免需要日志功能,用来记录一些用户
的登录
记录,操作
记录,以及一些程序的崩溃
定位,执行访问定位等等;
Python
内置 非常强大的日志模块 ==> logging
今天给大家分享一下以配置文件形式
进行配置log
日志 ;
- Centos6.7
- Python3.6
- logging0.5.1.2
logging
模块有三个比较重要的功能组件:
- loggers 配置文件可定义一些输出日志的appname
- handler 过滤器,比如设置日志的分隔大小,输出位置,日志文件创建等
- 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')