详解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 相关文章推荐
Django学习笔记之Class-Based-View
Feb 15 Python
Django自定义分页效果
Jun 27 Python
基于python批量处理dat文件及科学计算方法详解
May 08 Python
Django项目中包含多个应用时对url的配置方法
May 30 Python
Python3爬虫使用Fidder实现APP爬取示例
Nov 27 Python
python与字符编码问题
May 24 Python
详解Python odoo中嵌入html简单的分页功能
May 29 Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
Jan 18 Python
keras中的卷积层&池化层的用法
May 22 Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 Python
python 网络编程要点总结
Jun 18 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/07/08 PHP
thinkphp5框架API token身份验证功能示例
2019/05/21 PHP
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
JS实现随机化快速排序的实例代码
2013/08/01 Javascript
解析JavaScript中点号“.”的多义性
2013/12/02 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
2016/02/26 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
js简易版购物车功能
2017/06/17 Javascript
vue自定义指令directive实例详解
2018/01/17 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
深入理解Python中各种方法的运作原理
2015/06/15 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
Python MD5加密实例详解
2017/08/02 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
Python如何读写二进制数组数据
2020/08/01 Python
Python高并发和多线程有什么关系
2020/11/14 Python
求职简历的自我评价怎样写好
2013/10/07 职场文书
学校安全检查制度
2014/01/27 职场文书
幼儿教师寄语集锦
2014/04/03 职场文书
服务承诺口号
2014/05/22 职场文书
大学生简短的自我评价
2014/09/12 职场文书
关于安全的广播稿
2014/10/23 职场文书
公司门卫岗位职责
2015/04/13 职场文书
从事会计工作年限证明
2015/06/23 职场文书
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript
git中cherry-pick命令的使用教程
2022/06/25 Servers