Python-logging-日志

本文最后更新于:2020年10月11日 下午

日志

日志是跟踪软件运行时所发生的事件的一种方法
软件开发者在代码中调用日志函数,表明发生了特定的事件

logging可以很好的代替print功能,并且更加方便管理

快速开始

loggingpython自带的日志模块,一般不需要额外安装
需要使用日志前import即可

案例:Hello World

1
2
import logging
logging.info('Hello World')

这是一个简单的logging使用的例子
这里用logging记录了Hello World这个信息

如果没有特别设置,这个信息默认会输出到控制台上。并且附带一些诸如时间之类的额外的信息

日志等级

logging的日志有六个等级

等级 NOTSET DEBUG INFO WARNING(默认) ERROR CRITICAL
数值 0 10 20 30 40 50
信息 提示 调试信息
只在调试问题时使用
信息
事情按预期工作
警告
没有预料到的事件提示
错误
软件不能执行一些功能
严重错误
软件已不能继续运行

你可以在代码需要的位置记录不同等级的日志

案例:记录不同级别的日志

1
2
3
4
5
6
import logging
logging.debug('debug 信息')
logging.info('info 信息')
logging.warning('warning 信息')
logging.error('error 信息')
logging.critical('critial 信息')

可以在使用前,用logging.basicConfig规定日志的输出等级(上面说过的等级都有)
低于规定等级的日志,在程序运行过程中不会记录

案例:指定输出日志等级

1
2
3
4
import logging
logging.basicConfig(level=logging.INFO)
logging.debug('debug 信息')
logging.error('error 信息')

文件日志

可以在使用前,用logging.basicConfig规定日志的输出文件与输出方式

1
2
3
4
logging.basicConfig(
filename='new.log', # 日志文件文件路径
filemode='a' # 记录模式,可填入'a'或'w',与`open`函数的对应参数效果一致
)
  • filename
    日志文件文件路径
  • filemode
    记录模式,可填入’a’或’w’,与open函数的对应参数效果一致 (即’w’为覆盖,’a’为增量)

日志格式

日志中的信息除了基本写在程序中的信息以外,还包括了一些附属的信息(时间,级别,模块名……)
设置日志记录的格式结构,可以让记录更加精简或更加详细

可以在使用前,用logging.basicConfig规定日志格式

1
2
3
logging.basicConfig(
format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
)

格式参数参考

日志内容 信息
%(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 字符串形式的当前时间。默认格式:”%Y-%m-%d %H:%M:%S”
效果:“2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d 线程ID。可能没有
%(threadName)s 线程名。可能没有
%(process)d 进程ID。可能没有
%(message)s 用户输出的消息

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!