详解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实现多线程抓取知乎用户
Dec 12 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
Nov 29 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
python hbase读取数据发送kafka的方法
Dec 27 Python
python ChainMap的使用和说明详解
Jun 11 Python
python中比较两个列表的实例方法
Jul 04 Python
python读写csv文件实例代码
Jul 05 Python
python二元表达式用法
Dec 04 Python
Python xpath表达式如何实现数据处理
Jun 13 Python
python如何快速生成时间戳
Jul 21 Python
Python通过getattr函数获取对象的属性值
Oct 16 Python
Python3中对json格式数据的分析处理
Jan 28 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
php checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
使用ThinkPHP生成缩略图及显示
2017/04/27 PHP
JS 容错处理代码, 屏蔽错误信息
2021/03/09 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
jquery easyui使用心得
2014/07/07 Javascript
jQuery判断数组是否包含了指定的元素
2015/03/10 Javascript
chrome不支持form.submit的解决方案
2015/04/28 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
微信小程序之发送短信倒计时功能
2017/08/30 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
实例讲解python函数式编程
2014/06/09 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
使用虚拟环境打包python为exe 文件的方法
2019/08/29 Python
python sqlite的Row对象操作示例
2019/09/11 Python
python模块常用用法实例详解
2019/10/17 Python
在Django中实现添加user到group并查看
2019/11/18 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
实体的生命周期
2013/08/31 面试题
军校本科大学生自我评价
2014/01/14 职场文书
幼儿教师培训感言
2014/03/08 职场文书
房产继承公证书
2014/04/09 职场文书
技校毕业生自荐信
2014/06/03 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
毕业生自荐信范文
2015/03/05 职场文书