首先是对输出信息的配置,我个人比较常用的是以下格式:
import logging
logging.basicConfig(filename='train.log',
filemode='w',
level=logging.DEBUG,
format='[%(asctime)s]%(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
)
产生的 train.log
如下:
如果想修改,主要我们需要修改的是format
部分,format
部分可选参数为:
格式 | 作用 |
---|---|
%(name)s |
Logger 的名字 |
%(levelname)s |
日志级 |
%(filename)s |
调用日志输出函数的模块的文件 |
%(funcName)s |
调用日志输出函数的函数名 |
%(lineno)d |
调用日志输出函数的语句所在的代码行 |
%(relativeCreated)d |
输出日志信息时的,自Logger 创建以来的毫秒数 |
%(asctime)s |
字符串形式的当前时间。默认格式是“2003-07-16:49:45,896”。逗号后面的是毫秒 |
%(message)s |
用户输出的消息 |
我们添加信息可以使用以下方法:
logging.debug("debug message") #告警级别最低,只有在诊断问题时才有兴趣的详细信息。
logging.info("info message") #告警级别比debug要高,确认事情按预期进行。
logging.warning("warning message") #告警级别比info要高,该模式是默认的告警级别!预示着一些意想不到的事情发生,或在不久的将来出现一些问题(例如“磁盘空间低”)。该软件仍在正常工作。
logging.error("error message") #告警级别要比warning要高,由于一个更严重的问题,该软件还不能执行某些功能。
logging.critical("critical message") #告警级别要比error还要高,严重错误,表明程序本身可能无法继续运行。
如果我们想要嵌入一些数据可以使用Python
的format
:
logging.debug(f"训练数据大小:{len(train_data)}") # 这是一个骚技巧,注意到了吗