详解python日志输出使用配置文件格式


Posted in Python onFebruary 10, 2021

python脚本日志输出使用配置文件的形式,不需要在每个脚本里面配置日志。

需求简述:

如我要写2个脚本(a.py和b.py),a.py日志输出到/var/log/a.log,b.py日志输出到/var/log/b.log,并且日志按日期切割。如果每个脚本都去配置一遍日志的话,浪费时间也不利于后期维护。

现在我要使用配置文件的格式去统一管理python脚本的代码日志输出,后续所有python脚本日志都在这个配置文件里面配置,脚本读取。方便后续维护和增加脚本的可读性。

需求实现:

我配置文件路径及内容:

vim /data/yw/conf/logconf.conf 
 
[loggers]
keys=root,alog,blog
[handlers]
keys=handdef,handalog,handblog
 
[formatters]
keys=formatdef
###############################################
[logger_root]
level=DEBUG
handlers=handdef
 
[logger_alog]
level=DEBUG
# 如果同时使用handalog,handdef ,那么在执行a.py脚本的时候日志即输出到控制台,也输出到日志文件
handlers=handalog,handdef
qualname=alog
propagate=0
 
[logger_blog]
#b.py 的日志我不让他输出到控制台,所以不用handdef 这个hands去处理日志
level=DEBUG
handlers=handblog
qualname=blog
propagate=0
 
###############################################
[handler_handdef]
# 输出到控制台
class=StreamHandler
level=INFO
formatter=formatdef
args=(sys.stderr,)
 
 
[handler_handalog]
# a.py 日志我按时间切割
# handlers.TimedRotatingFileHandler:使用时间格式切割日志,midnight为凌晨切割  
# 如果配置按时#间切割的话可以这样:class=FileHandler,然后写个脚本定时去切割。
class=handlers.TimedRotatingFileHandler
level=DEBUG
formatter=formatdef
args=('/var/log/a.log', 'midnight')
#args=('/var/log/a.log', 'a') 不使用时间切割可以这样配置args
#另一种写法:面三个参数含义: D 按天切割 1 每天只切割一个文件 5 保留5个日志文件
#args=('/data/ywlog/cron/cron_dbbackup.log', 'D', 1, 5)
 
[handler_handblog]
# b.py 日志我不进行切割
class=FileHandler
level=DEBUG
formatter=formatdef
args=('/var/log/b.log', 'a') 
###############################################
[formatter_formatdef]
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s'
datefmt='%a, %d %b %Y %H:%M:%S'

脚本引用配置文件:

vi a.py

#!/usr/bin/python
# coding=utf-8
import logging, logging.config
reload(sys)
sys.setdefaultencoding('utf8')
 
logging.config.fileConfig("/data/yw/conf/logconf.conf")
logger = logging.getLogger('alog') #alog 为logconf.conf loggers 配置的关键字
# 日志输出
logger.info("aaaa 正确日志")
logger.error("aaaa 错误日志")

vi b.py

#!/usr/bin/python
# coding=utf-8
import logging, logging.config
reload(sys)
sys.setdefaultencoding('utf8')
 
logging.config.fileConfig("/data/yw/conf/logconf.conf")
logger = logging.getLogger('blog') #blog 为logconf.conf loggers 配置的关键字
# 日志输出
logger.info("bbbb 正确日志")
logger.error("bbbb 错误日志")

测试结果:

 执行a.py脚本的时候发现日志输出到控制台也输入到日志文件里面,但是执行b.py 时,日志只输入到日志文件了。和配置文件注释的一样。

后期如果我还要添加c.py, d.py 脚本的话我只需要按照上面的格式去配置即可。不需要在脚本里面去配置。

到此这篇关于详解python日志输出使用配置文件格式的文章就介绍到这了,更多相关python日志输出 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现将元祖转换成数组的方法
May 04 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
python数字图像处理实现直方图与均衡化
May 04 Python
tensorflow: 查看 tensor详细数值方法
Jun 13 Python
对python list 遍历删除的正确方法详解
Jun 29 Python
用Python实现大文本文件切割的方法
Jan 12 Python
python开发准备工作之配置虚拟环境(非常重要)
Feb 11 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
Tensorflow限制CPU个数实例
Feb 06 Python
从多个tfrecord文件中无限读取文件的例子
Feb 17 Python
python使用shell脚本创建kafka连接器
Apr 29 Python
python 获取域名到期时间的方法步骤
Feb 10 #Python
Numpy ndarray 多维数组对象的使用
Feb 10 #Python
Python将QQ聊天记录生成词云的示例代码
Feb 10 #Python
python利用文件时间批量重命名照片和视频
Feb 09 #Python
python opencv实现图像配准与比较
Feb 09 #Python
python urllib和urllib3知识点总结
Feb 08 #Python
Python3.9.1中使用match方法详解
Feb 08 #Python
You might like
探讨方法的重写(覆载)详解
2013/06/08 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
详解使用php-cs-fixer格式化代码
2020/09/16 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
DEFER怎么用?
2006/07/01 Javascript
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
JavaScript学习笔记之数组的增、删、改、查
2016/03/23 Javascript
Zabbix添加Node.js监控的方法
2016/10/20 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
2018/08/31 Javascript
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
python执行外部程序的常用方法小结
2015/03/21 Python
Python验证码识别处理实例
2015/12/28 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
2017/11/21 Python
详解Django rest_framework实现RESTful API
2018/05/24 Python
python实现大文本文件分割
2019/07/22 Python
python Django 创建应用过程图示详解
2019/07/29 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
解决django FileFIELD的编码问题
2020/03/30 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
写求职信有什么意义
2014/02/17 职场文书
厂长岗位职责
2014/02/19 职场文书
平安工地汇报材料
2014/08/19 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书