详解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+matplotlib绘制3D条形图实例代码
Jan 17 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
Sep 03 Python
python矩阵/字典实现最短路径算法
Jan 17 Python
django框架用户权限中的session缓存到redis中的方法
Aug 06 Python
python使用celery实现异步任务执行的例子
Aug 28 Python
Linux下通过python获取本机ip方法示例
Sep 06 Python
Python实现socket非阻塞通讯功能示例
Nov 06 Python
opencv3/C++ 平面对象识别&透视变换方式
Dec 11 Python
python使用numpy实现直方图反向投影示例
Jan 17 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
Feb 26 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
Mar 30 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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
JQUBar 基于JQUERY的柱状图插件
2010/11/23 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
jQuery实现购物车数字加减效果
2015/03/14 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
Vue-cli@3.0 插件系统简析
2018/09/05 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
JavaScript实现答题评分功能页面
2020/06/24 Javascript
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
Pyhton中单行和多行注释的使用方法及规范
2016/10/11 Python
Python基于百度AI的文字识别的示例
2018/04/21 Python
使用Python实现租车计费系统的两种方法
2018/09/29 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
Internet体系结构
2014/12/21 面试题
sealed修饰符是干什么的
2012/10/23 面试题
亚运会口号
2014/06/20 职场文书
文案策划岗位职责
2015/02/11 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers