详解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中的迭代器和生成器
Oct 26 Python
基于hashlib模块--加密(详解)
Jun 21 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
Nov 14 Python
Python实现七彩蟒蛇绘制实例代码
Jan 16 Python
python如何爬取个性签名
Jun 19 Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 Python
使用python 写一个静态服务(实战)
Jun 28 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
Apr 15 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
pycharm中使用request和Pytest进行接口测试的方法
Jul 31 Python
python中的split、rsplit、splitlines用法说明
Oct 23 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
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
2013/06/13 PHP
基于递归实现的php树形菜单代码
2014/11/19 PHP
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
webuploader模态框ueditor显示问题解决方法
2016/12/27 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
原生JS实现瀑布流插件
2018/02/06 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
利用Webpack实现小程序多项目管理的方法
2019/02/25 Javascript
vue+mock.js实现前后端分离
2019/07/24 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
vue实现拖拽效果
2019/12/23 Javascript
vue 使用微信jssdk,调用微信相册上传图片功能
2020/11/13 Javascript
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
PHP引擎php.ini参数优化深入讲解
2021/03/24 PHP
中文系师范生自荐信
2013/10/01 职场文书
专科文秘应届生求职信
2013/11/18 职场文书
幼儿园秋游感想
2014/03/12 职场文书
2016秋季校长开学典礼致辞
2015/11/26 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python