详解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 20 Python
Python pickle模块用法实例分析
May 27 Python
在Django的上下文中设置变量的方法
Jul 20 Python
Python实现八大排序算法
Aug 13 Python
window下eclipse安装python插件教程
Apr 24 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
Jun 05 Python
Python深拷贝与浅拷贝用法实例分析
May 05 Python
在PYQT5中QscrollArea(滚动条)的使用方法
Jun 14 Python
获取Pytorch中间某一层权重或者特征的例子
Aug 17 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
Sep 28 Python
Jupyter安装链接aconda实现过程图解
Nov 02 Python
使用Django的JsonResponse返回数据的实现
Jan 15 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 4.2书写安全的脚本
2006/10/09 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
IE/FireFox具备兼容性的拖动代码
2007/08/13 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
2015/12/10 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
微信浏览器禁止页面下拉查看网址实例详解
2017/06/28 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
react脚手架如何配置less和ant按需加载的方法步骤
2018/11/28 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
python的tkinter布局之简单的聊天窗口实现方法
2014/09/03 Python
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
利用python爬取软考试题之ip自动代理
2017/03/28 Python
Python django框架应用中实现获取访问者ip地址示例
2019/05/17 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
css3 flex实现div内容水平垂直居中的几种方法
2020/03/27 HTML / CSS
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
最受欢迎的自我评价
2013/12/22 职场文书
《圆明园的毁灭》教学反思
2014/02/28 职场文书
党的群众路线学习材料
2014/05/16 职场文书
法制宣传标语
2014/06/23 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
竞聘报告优秀范文
2014/11/06 职场文书
结婚堵门保证书
2015/05/08 职场文书
家电创业计划书
2019/08/05 职场文书
Java spring定时任务详解
2021/10/05 Java/Android
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript
MySQL 原理与优化之Update 优化
2022/08/14 MySQL