详解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 相关文章推荐
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
May 17 Python
Python 2/3下处理cjk编码的zip文件的方法
Apr 26 Python
python 将字符串完成特定的向右移动方法
Jun 11 Python
python 接口实现 供第三方调用的例子
Aug 13 Python
Python迭代器iterator生成器generator使用解析
Oct 24 Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 Python
Python pip配置国内源的方法
Feb 14 Python
python实现单张图像拼接与批量图片拼接
Mar 23 Python
Django高并发负载均衡实现原理详解
Apr 04 Python
在Python中字典按值排序的实现方法
Nov 12 Python
Python可视化学习之matplotlib内置单颜色
Feb 24 Python
python微信智能AI机器人实现多种支付方式
Apr 12 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笔记之:文章中图片处理的使用
2013/04/26 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
2014/10/22 PHP
Symfony2实现在doctrine中内置数据的方法
2016/02/05 PHP
初识PHP中的Swoole
2016/04/05 PHP
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
jQuery 选择器理解
2010/03/16 Javascript
也说JavaScript中String类的replace函数
2011/09/22 Javascript
JQuery实现表格中相同单元格合并示例代码
2013/06/26 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
JavaScript动态添加style节点的方法
2015/06/09 Javascript
JavaScript中几种排序算法的简单实现
2015/07/29 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
2017/12/06 Javascript
微信小程序实现分享到朋友圈功能
2018/07/19 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
vue中v-model对select的绑定操作
2020/08/31 Javascript
学习python (1)
2006/10/31 Python
Python深入学习之上下文管理器
2014/08/31 Python
跟老齐学Python之使用Python查询更新数据库
2014/11/25 Python
用PyQt进行Python图形界面的程序的开发的入门指引
2015/04/14 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
django连接oracle时setting 配置方法
2019/08/29 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
Pytorch的mean和std调查实例
2020/01/02 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
什么是会话Bean
2015/05/14 面试题
小学生暑假家长评语
2014/04/17 职场文书
优秀少先队工作者事迹材料
2014/05/13 职场文书
股东合作协议书
2014/09/12 职场文书
公安机关纪律作风整顿剖析
2014/10/10 职场文书
2014年图书室工作总结
2014/12/09 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android
Python matplotlib绘制雷达图
2022/04/13 Python