示例代码如下:
import logging
from logging.handlers import RotatingFileHandler
import time
fmt = " %(asctime)s %(levelname)s %(filename)s %(funcName)s [ line:%(lineno)d ] %(message)s"
datefmt = '%a, %d %b %Y %H:%M:%S'
curTime = time.strftime("%Y-%m-%d %H%M", time.localtime())
handler_1 = logging.StreamHandler()
handler_2 = RotatingFileHandler(文件存储路径+"文件名_{0}.log".format(curTime),backupCount=20,encoding='utf-8')
#设置日志的输出内容形式,输出渠道
logging.basicConfig(
format=fmt,
datefmt=datefmt,
level=logging.INFO,
handlers=[handler_1,handler_2]
)
1、导入日志模块
import logging
2、导入文件处理程序
from logging.handlers import RotatingFileHandler
3、导入时间、日期
import time,datetime
4、设置日志输出格式
fmt = " %(asctime)s %(levelname)s %(filename)s %(funcName)s [ line:%(lineno)d ] %(message)s"
%(asctime)s:打印日志的时间
%(levelname)s:打印日志级别的数值
%(filename)s:打印当前执行程序名
%(funcName)s:打印日志的当前函数
%(lineno)d:打印日志的当前行号
%(message)s:打印日志信息
5、设置时间格式
datefmt = '%a, %d %b %Y %H:%M:%S' # 星期(简化)、当月的第几天、本地月份、完整年份、时分秒
format格式如下:
格式 | 含义 |
---|---|
%a | 本地(locale)简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化月份名称 |
%B | 本地完整月份名称 |
%c | 本地相应的日期和时间表示 |
%d | 一个月中的第几天(01 - 31 |
%H | 一天中的第几个小时(24 小时制,00 - 23) |
%l | 一天中的第几个小时(12 小时制,01 - 12) |
%j | 一年中的第几天(001 - 366) |
%m | 月份(01 - 12) |
%M | 分钟数(00 - 59) |
%p | 本地 am 或者 pm 的相应符 |
%S | 秒(01 - 61) |
%U | 一年中的星期数(00 - 53 星期天是一个星期的开始)第一个星期天之前的所有天数都放在第 0 周 |
%w | 一个星期中的第几天(0 - 6,0 是星期天) |
%W | 和 %U 基本相同,不同的是 %W 以星期一为一个星期的开始 |
%x | 本地相应日期 |
%X | 本地相应时间 |
%y | 去掉世纪的年份(00 - 99) |
%Y | 完整的年份 |
%z | 用 +HHMM 或 -HHMM 表示距离格林威治的时区偏移(H 代表十进制的小时数,M 代表十进制的分钟数) |
%Z | 时区的名字(如果不存在为空字符) |
%% | %号本身 |
6、获取当前时间
curTime = time.strftime("%Y-%m-%d %H%M", time.localtime())
7、创建对象(将日志信息输出到某个对象)
handler_1 = logging.StreamHandler()
8、创建对象(日志存储)
handler_2 = RotatingFileHandler(文件存储路径+"文件名_{0}.log".format(curTime),backupCount=20,encoding='utf-8')
9、设置日志的输出内容形式,输出渠道
logging.basicConfig(
format=fmt,
datefmt=datefmt,
level=logging.INFO,
handlers=[handler_1,handler_2]
)
logging.basicConfig()的参数:
level:输出日志的等级,debug<info<warning<critical<error
format:输出格式
datemat:时间信息
filename:日志信息输出到的日志文件名
filemode:决定使用什么模式来打开日志文件('r'、'w'、'a'),默认为'a'
效果如下图