详解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爬虫(入门教程、视频教程)
Jan 08 Python
pyqt5利用pyqtDesigner实现登录界面
Mar 28 Python
python开启debug模式的方法
Jun 27 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
Jan 10 Python
Python ORM编程基础示例
Feb 02 Python
Python实现企业微信机器人每天定时发消息实例
Feb 25 Python
Python利用PyPDF2库获取PDF文件总页码实例
Apr 03 Python
python中如何设置代码自动提示
Jul 15 Python
Python2手动安装更新pip过程实例解析
Jul 16 Python
Python sqlalchemy时间戳及密码管理实现代码详解
Aug 01 Python
Ubuntu16安装Python3.9的实现步骤
Dec 15 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 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
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
PHP生成网页快照 不用COM不用扩展.
2010/02/11 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
javascript addBookmark 加入收藏 多浏览器兼容
2009/08/15 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
2018/02/08 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
python实现的简单FTP上传下载文件实例
2015/06/30 Python
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
Python序列操作之进阶篇
2016/12/08 Python
python实现画圆功能
2018/01/25 Python
Python从零开始创建区块链
2018/03/06 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
2018/04/27 Python
浅谈Python中的全局锁(GIL)问题
2019/01/11 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
浅析Python迭代器的高级用法
2020/07/16 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
Peter Alexander新西兰站:澳大利亚领先的睡衣设计师品牌
2016/12/10 全球购物
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
Python里面search()和match()的区别
2016/09/21 面试题
高一物理教学反思
2014/01/24 职场文书
政府个人对照检查材料
2014/08/28 职场文书
病人慰问信范文
2015/02/15 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
吴仁宝观后感
2015/06/09 职场文书
mysql 获取相邻数据项
2022/05/11 MySQL