详解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之wxPython应用实例
Sep 28 Python
浅析AST抽象语法树及Python代码实现
Jun 06 Python
Python用threading实现多线程详解
Feb 03 Python
Python书单 不将就
Jul 11 Python
30秒轻松实现TensorFlow物体检测
Mar 14 Python
python Web开发你要理解的WSGI & uwsgi详解
Aug 01 Python
python爬虫框架scrapy实现模拟登录操作示例
Aug 02 Python
Django JWT Token RestfulAPI用户认证详解
Jan 23 Python
Python 实现数据结构-堆栈和队列的操作方法
Jul 17 Python
Python面向对象程序设计之继承、多态原理与用法详解
Mar 23 Python
Django admin 实现search_fields精确查询实例
Mar 30 Python
python3美化表格数据输出结果的实现代码
Apr 14 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
图象函数中的中文显示
2006/10/09 PHP
php数组中删除元素之重新索引的方法
2014/09/16 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
在JS中如何调用JSP中的变量
2014/01/22 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
2016/04/12 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
vue自定义指令用法经典实例小结
2019/03/16 Javascript
react基本安装与测试示例
2020/04/27 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
Python实现计算圆周率π的值到任意位的方法示例
2018/05/08 Python
python实现两张图片的像素融合
2019/02/23 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
个人对照检查材料思想汇报
2014/09/26 职场文书
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers