详解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实现百度关键词排名查询
Mar 30 Python
python编写爬虫小程序
May 14 Python
Python中operator模块的操作符使用示例总结
Jun 28 Python
Python字符串处理实例详解
May 18 Python
Python全排列操作实例分析
Jul 24 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
Jun 18 Python
python3 selenium自动化测试 强大的CSS定位方法
Aug 23 Python
基于plt.title无法显示中文的快速解决
May 16 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
Jun 17 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
Aug 17 Python
python实现每天自动签到领积分的示例代码
Aug 18 Python
Python实例教程之检索输出月份日历表
Dec 16 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、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
2017/02/04 PHP
php使用自带dom扩展进行元素匹配的原理解析
2020/05/29 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
js异或加解密效果代码
2008/06/25 Javascript
js下获取div中的数据的原理分析
2010/04/07 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
Nodejs实现的一个静态服务器实例
2014/12/06 NodeJs
第四章之BootStrap表单与图片
2016/04/25 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
原生js实现查询天气小应用
2016/12/09 Javascript
vue.js中指令Directives详解
2017/03/20 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
vue基于mint-ui的城市选择3级联动的示例
2017/10/25 Javascript
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
Vue+ElementUI table实现表格分页
2019/12/14 Javascript
jQuery实现html可联动的百分比进度条
2020/03/26 jQuery
使用python实现个性化词云的方法
2017/06/16 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
python实现网站微信登录的示例代码
2019/09/18 Python
解决pytorch DataLoader num_workers出现的问题
2020/01/14 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
新员工培训个人的自我评价
2013/10/09 职场文书
人事主管岗位职责范本
2013/12/04 职场文书
学校宣传标语
2014/06/18 职场文书
国际商务专业毕业生自我鉴定2014
2014/09/27 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
小浪底导游词
2015/02/12 职场文书
无线电知识基础入门篇
2022/02/18 无线电
Django框架模板用法详解
2022/06/10 Python