详解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中列表和元组的相关语句和方法讲解
Aug 20 Python
利用python微信库itchat实现微信自动回复功能
May 18 Python
python实现读取大文件并逐行写入另外一个文件
Apr 19 Python
Pandas之ReIndex重新索引的实现
Jun 25 Python
python打造爬虫代理池过程解析
Aug 15 Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 Python
pygame实现俄罗斯方块游戏(AI篇1)
Oct 29 Python
Pytorch to(device)用法
Jan 08 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
Feb 17 Python
Python反爬虫伪装浏览器进行爬虫
Feb 28 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 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
PHP开发中的错误收集,不定期更新。
2011/02/03 PHP
php 问卷调查结果统计
2015/10/08 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
类似CSDN图片切换效果脚本
2009/09/17 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
关于js原型的面试题讲解
2016/09/25 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
jQuery轻松实现无缝轮播效果
2017/03/22 jQuery
vue多页面开发和打包正确处理方法
2018/04/20 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
关于vue项目中搜索节流的实现代码
2019/09/17 Javascript
JavaScript实现图片上传并预览并提交ajax
2019/09/30 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
Python下Fabric的简单部署方法
2015/07/14 Python
利用aardio给python编写图形界面
2017/08/21 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
信号生成及DFT的python实现方式
2020/02/25 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
python中upper是做什么用的
2020/07/20 Python
Python中Pyspider爬虫框架的基本使用详解
2021/01/27 Python
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
中专毕业个人的自荐信格式
2013/09/21 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
小学生评语集锦
2014/04/18 职场文书
保安公司服务承诺书
2014/05/28 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
论语读书笔记
2015/06/26 职场文书
工作简报格式范文
2015/07/21 职场文书