详解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 相关文章推荐
Pandas之drop_duplicates:去除重复项方法
Apr 18 Python
Python  unittest单元测试框架的使用
Sep 08 Python
django celery redis使用具体实践
Apr 08 Python
Python数据类型之Set集合实例详解
May 07 Python
pycharm修改文件的默认打开方式的步骤
Jul 29 Python
python定义类self用法实例解析
Jan 22 Python
windows支持哪个版本的python
Jul 03 Python
Pycharm中使用git进行合作开发的教程详解
Nov 17 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
Nov 19 Python
python中@property的作用和getter setter的解释
Dec 22 Python
一个入门级python爬虫教程详解
Jan 27 Python
Python TypeError: ‘float‘ object is not subscriptable错误解决
Dec 24 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
浅析THINKPHP的addAll支持的最大数据量
2015/02/03 PHP
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
学习js在线html(富文本,所见即所得)编辑器
2012/12/18 Javascript
js 获取、清空input type="file"的值示例代码
2014/02/19 Javascript
jquery复选框多选赋值给文本框的方法
2015/01/27 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
js实现内容显示并使用json传输数据
2016/03/16 Javascript
JQuery在循环中绑定事件的问题详解
2016/06/02 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
jquery二级目录选中当前页的css样式
2016/12/08 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
2017/09/13 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
vue实现动态列表点击各行换色的方法
2018/09/13 Javascript
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
对python GUI实现完美进度条的示例详解
2018/12/13 Python
python实现抖音点赞功能
2019/04/07 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
装潢设计专业推荐信模板
2013/11/26 职场文书
可口可乐广告词
2014/03/20 职场文书
感恩母亲节演讲稿
2014/05/07 职场文书
物理学专业自荐信
2014/06/11 职场文书
材料员岗位职责范本
2015/04/11 职场文书
党员违纪检讨书
2015/05/05 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
HTML基本元素标签介绍
2022/02/28 HTML / CSS