详解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多线程下载文件的方法
Jul 10 Python
详解使用python crontab设置linux定时任务
Dec 08 Python
Python中类的创建和实例化操作示例
Feb 27 Python
python 多进程共享全局变量之Manager()详解
Aug 15 Python
python实现递归查找某个路径下所有文件中的中文字符
Aug 31 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
Nov 15 Python
python 实现查询Neo4j多节点的多层关系
Dec 23 Python
AUC计算方法与Python实现代码
Feb 28 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
Mar 16 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
May 16 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
May 18 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
Aug 31 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设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
php简单压缩css样式示例
2016/09/22 PHP
php获取小程序码的实现代码(B类接口)
2020/06/13 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
Javascript this指针
2009/07/30 Javascript
JavaScript 异步调用框架 (Part 1 - 问题 & 场景)
2009/08/03 Javascript
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
node.js Web应用框架Express入门指南
2014/05/28 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
[44:41]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python连接mysql调用存储过程示例
2014/03/05 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
Django配置MySQL数据库的完整步骤
2019/09/07 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
Django xadmin安装及使用详解
2020/10/26 Python
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
设计专业自荐信
2014/06/19 职场文书
先进基层党组织材料
2014/12/25 职场文书
个人总结与自我评价
2015/02/14 职场文书
清洁工个人工作总结
2015/03/05 职场文书
面试通知短信
2015/04/20 职场文书
详解Node.js如何处理ES6模块
2021/05/15 Javascript