• 售前

  • 售后

热门帖子
入门百科

详解python日记输出使用设置文件格式

[复制链接]
张柏芝一号胸 显示全部楼层 发表于 2021-10-25 19:26:30 |阅读模式 打印 上一主题 下一主题
python脚本日记输出利用设置文件的形式,不须要在每个脚本里面设置日记。
需求简述:

如我要写2个脚本(a.py和b.py),a.py日记输出到/var/log/a.log,b.py日记输出到/var/log/b.log,而且日记按日期切割。如果每个脚本都去设置一遍日记的话,浪费时间也不利于后期维护。
现在我要利用设置文件的格式去统一管理python脚本的代码日记输出,后续全部python脚本日记都在这个设置文件里面设置,脚本读取。方便后续维护和增长脚本的可读性。
需求实现:

我设置文件路径及内容:
  1. vim /data/yw/conf/logconf.conf
  2. [loggers]
  3. keys=root,alog,blog
  4. [handlers]
  5. keys=handdef,handalog,handblog
  6. [formatters]
  7. keys=formatdef
  8. ###############################################
  9. [logger_root]
  10. level=DEBUG
  11. handlers=handdef
  12. [logger_alog]
  13. level=DEBUG
  14. # 如果同时使用handalog,handdef ,那么在执行a.py脚本的时候日志即输出到控制台,也输出到日志文件
  15. handlers=handalog,handdef
  16. qualname=alog
  17. propagate=0
  18. [logger_blog]
  19. #b.py 的日志我不让他输出到控制台,所以不用handdef 这个hands去处理日志
  20. level=DEBUG
  21. handlers=handblog
  22. qualname=blog
  23. propagate=0
  24. ###############################################
  25. [handler_handdef]
  26. # 输出到控制台
  27. class=StreamHandler
  28. level=INFO
  29. formatter=formatdef
  30. args=(sys.stderr,)
  31. [handler_handalog]
  32. # a.py 日志我按时间切割
  33. # handlers.TimedRotatingFileHandler:使用时间格式切割日志,midnight为凌晨切割  
  34. # 如果配置按时#间切割的话可以这样:class=FileHandler,然后写个脚本定时去切割。
  35. class=handlers.TimedRotatingFileHandler
  36. level=DEBUG
  37. formatter=formatdef
  38. args=('/var/log/a.log', 'midnight')
  39. #args=('/var/log/a.log', 'a') 不使用时间切割可以这样配置args
  40. #另一种写法:面三个参数含义: D 按天切割 1 每天只切割一个文件 5 保留5个日志文件
  41. #args=('/data/ywlog/cron/cron_dbbackup.log', 'D', 1, 5)
  42. [handler_handblog]
  43. # b.py 日志我不进行切割
  44. class=FileHandler
  45. level=DEBUG
  46. formatter=formatdef
  47. args=('/var/log/b.log', 'a')
  48. ###############################################
  49. [formatter_formatdef]
  50. format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s'
  51. datefmt='%a, %d %b %Y %H:%M:%S'
复制代码
脚本引用设置文件:
vi a.py
  1. #!/usr/bin/python
  2. # coding=utf-8
  3. import logging, logging.config
  4. reload(sys)
  5. sys.setdefaultencoding('utf8')
  6. logging.config.fileConfig("/data/yw/conf/logconf.conf")
  7. logger = logging.getLogger('alog') #alog 为logconf.conf loggers 配置的关键字
  8. # 日志输出
  9. logger.info("aaaa 正确日志")
  10. logger.error("aaaa 错误日志")
复制代码
vi b.py
  1. #!/usr/bin/python
  2. # coding=utf-8
  3. import logging, logging.config
  4. reload(sys)
  5. sys.setdefaultencoding('utf8')
  6. logging.config.fileConfig("/data/yw/conf/logconf.conf")
  7. logger = logging.getLogger('blog') #blog 为logconf.conf loggers 配置的关键字
  8. # 日志输出
  9. logger.info("bbbb 正确日志")
  10. logger.error("bbbb 错误日志")
复制代码
测试效果:
实行a.py脚本的时候发现日记输出到控制台也输入到日记文件里面,但是实行b.py 时,日记只输入到日记文件了。和设置文件注释的一样。
后期如果我还要添加c.py, d.py 脚本的话我只须要按照上面的格式去设置即可。不须要在脚本里面去设置。
到此这篇关于详解python日记输出利用设置文件格式的文章就先容到这了,更多相干python日记输出 内容请搜刮脚本之家从前的文章或继续浏览下面的相干文章盼望大家以后多多支持脚本之家!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作