• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解python日志输出使用配置文件格式

    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 第三方日志框架loguru使用
    • python和websocket构建实时日志跟踪器的步骤
    • 解决python logging遇到的坑 日志重复打印问题
    • python 实现多进程日志轮转ConcurrentLogHandler
    • python 实现logging动态变更输出日志文件名
    • python (logging) 日志按日期、大小回滚的操作
    • python基于pexpect库自动获取日志信息
    • Python日志打印里logging.getLogger源码分析详解
    • python subprocess pipe 实时输出日志的操作
    • Python中logging日志的四个等级和使用
    • 如何在Python项目中引入日志
    上一篇:python 获取域名到期时间的方法步骤
    下一篇:使用Python爬取小姐姐图片(beautifulsoup法)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    详解python日志输出使用配置文件格式 详解,python,日志,输出,使用,