Logging日志模块的使用

Posted sunch

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Logging日志模块的使用相关的知识,希望对你有一定的参考价值。

五种级别的日志记录模式

DEBUG          详细信息,典型地调试问题时会感兴趣。
INFO             证明事情按预期工作。
WARNING          表明发生了一些意外,或者不久的将来会发生问题(如‘磁盘满了’)。软件还是在正常工作。
ERROR            由于更严重的问题,软件已不能执行一些功能了。
CRITICAL         严重错误,表明软件已不能继续运行了。

两种配置方式

技术分享图片
logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有:

filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。
filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
format:指定handler使用的日志显示格式。
datefmt:指定日期时间格式。
level:设置rootlogger(后边会讲解具体概念)的日志级别
stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。

format参数中可能用到的格式化串:
%(name)s Logger的名字
%(levelno)s 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d 线程ID。可能没有
%(threadName)s 线程名。可能没有
%(process)d 进程ID。可能没有
%(message)s用户输出的消息
配置参数

简单配置

import logging  
    logging.basicConfig(level=logging.DEBUG,          # 输出的等级
                        format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s,  # 输出的格式
                        datefmt=%a, %d %b %Y %H:%M:%S,          # 输出的时间格式(上面的输出格式包含有输出时间)
                        filename=/tmp/test.log,      # 写入文件的路径
                        filemode=w)                  # 写入的格式
      
    logging.debug(debug message)  
    logging.info(info message)  
    logging.warning(warning message)  
    logging.error(error message)  
    logging.critical(critical message)

详细配置

import logging

logger = logging.getLogger()

# 创建一个handler并设置输出等级
fh = logging.FileHandler(test.log, encoding=utf-8)
sh = logging.StreamHandler()
fh.setLevel(logging.WARNING)
sh.setLevel(logging.WARNING)

# 创建格式
formatter = logging.Formatter(%(asctime)s - %(name)s - %(levelname)s - %(message)s)

# 给handler绑定格式,并把handler绑到logger实例
fh.setFormatter(formatter)
sh.setFormatter(formatter)
logger.addHandler(fh)
logger.addHandler(sh)

logger.debug(logger debug message)
logger.info(logger info message)
logger.warning(logger warning message)
logger.error(logger error message)
logger.critical(logger critical message)

 

以上是关于Logging日志模块的使用的主要内容,如果未能解决你的问题,请参考以下文章

logging模块

logging模块全总结

Python之日志处理 logging模块

Python之日志处理(logging模块)

python logging模块

Python logging 模块