美文网首页
python如何用logging写日志

python如何用logging写日志

作者: 玩物励志老乐 | 来源:发表于2020-12-04 18:28 被阅读0次

    后台运行的程序,必须要记录日志,否则看不到问题发生的过程,解决问题就无从谈起。

    python记录日志可以使用logging模块。logging有一个方法叫basicConfig,可以很方便的定义格式,文件名等设置。然而实际上,这个方法并不可靠。

    我遇到的情况是,主程序master.py调用了basicConfig,可以正确写日志,但是我提供的web api app.py同样调用了basicConfig,但却得不到任何的日志内容。

    日志虽然不是我们要实现的功能,但却对我们维护程序,解决问题起到关键作用。通过查阅资料和实验,我发现有2种方式都很可靠。

    1. FileHandler

    import logging
    
    # 定义fileHandler
    fh = logging.FileHandler(filename="xxx.log", mode="a")
    fh.setLevel(logging.INFO)
    # 设置格式
    logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
    fh.setFormatter(formatter)
    
    logger = logging.getLogger("for test")
    logger. addHandler(fh)
    
    # 真正记录日志
    logger.info("test log")
    

    这种写法,如果是在一个类里用也就罢了,如果整个程序的各个部分都要写日志,就太啰嗦了。如果你还要在其他文件写日志,不再这么设置一番,恐怕还是不能正常记录。

    2. fileConfig

    这种做法其实就是通过配置文件的方式,把上面的工作都预先设置好了。代码写起来很方便。
    我们可以写新建一个ini格式的配置文件,logging.conf,代码如下:

    [loggers]
    keys=root,simpleExample
    
    [handlers]
    keys=consoleHandler,fileHandler
    
    [formatters]
    keys=simpleFormatter
    
    [logger_root]
    level=DEBUG
    handlers=fileHandler
    
    [logger_simpleExample]
    level=DEBUG
    handlers=consoleHandler,fileHandler
    qualname=simpleExample
    propagate=0
    
    [handler_consoleHandler]   # 控制台日志
    class=StreamHandler
    level=WARNING
    formatter=simpleFormatter
    args=(sys.stdout,)
    
    [handler_fileHandler]    # 文件日志
    class=FileHandler
    level=DEBUG    # 这里修改日志记录级别
    formatter=simpleFormatter
    args=('bin.log','a+')    # 这里修改日志名
    
    [formatter_simpleFormatter]
    format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
    datefmt=
    

    然后再在程序里用2行代码完成加载

    import logging
    from logging import config
    
    # 加载配置
    config.fileConfig('logging.conf')
    logger = logging.getLogger("mudule1")
    
    # 使用
    logger.info("test log")
    

    小结

    使用logging记录日志时,basicConfig方法似乎不那么可靠。虽然可以用fileHandler来设置,但是这里更推荐使用fileConfig来设置。设置文件可以直接从上文粘贴。

    相关文章

      网友评论

          本文标题:python如何用logging写日志

          本文链接:https://www.haomeiwen.com/subject/qyuiwktx.html