详解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数据结构之二叉树的统计与转换实例
Apr 29 Python
介绍Python中的fabs()方法的使用
May 14 Python
使用python实现tcp自动重连
Jul 02 Python
Python复制Word内容并使用格式设字体与大小实例代码
Jan 22 Python
Opencv实现抠图背景图替换功能
May 21 Python
Python @property使用方法解析
Sep 17 Python
python制作朋友圈九宫格图片
Nov 03 Python
numpy 返回函数的上三角矩阵实例
Nov 25 Python
Python reques接口测试框架实现代码
Jul 28 Python
用 Python 元类的特性实现 ORM 框架
May 19 Python
Python自动化工具之实现Excel转Markdown表格
Apr 08 Python
python的html标准库
Apr 29 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&&mysql)五
2006/10/09 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
PHP中让curl支持sock5的代码实例
2015/01/21 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
js 设置选中行的样式的实现代码
2010/05/24 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
JavaScript常用函数工具集:lao-utils
2016/03/01 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
Vue Router的手写实现方法实现
2020/03/02 Javascript
在Echarts图中给坐标轴加一个标识线markLine
2020/07/20 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
2020/08/03 Javascript
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
Pandas Shift函数的基础入门学习笔记
2018/11/16 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
python爬取抖音视频的实例分析
2021/01/19 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
学生会竞选自荐信
2013/10/12 职场文书
服装厂厂长职责
2013/12/16 职场文书
农村党支部先进事迹
2014/01/14 职场文书
贯彻学习两会心得体会范文
2014/03/17 职场文书
美容院店长岗位职责
2014/04/08 职场文书
服装发布会策划方案
2014/05/22 职场文书
电子信息工程自荐信
2014/05/26 职场文书
2014年信息宣传工作总结
2014/12/18 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书