# coding=utf-8
import logging
from logging import handlers
import time
def mylogger():
#创建一个记录器,命名为test
logger = logging.getLogger('test')
#告诉它要记录哪些级别的日志(具体等级在下面#1)(与下面setLevel的区别)
logger.setLevel(level=logging.DEBUG)
#输出格式(参数在下面#2)
formatter = logging.Formatter('%(asctime)s - %(filename)s - %(lineno)d - %(name)s - %(levelname)s: %(message)s')
#handler是设置输出到哪里去
#StreamHandler是输出到控制台,里面的setLevel是设置给handler设是告诉它要输出哪些级别的日志(与上面setLevel的区别),
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.DEBUG)
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
#FileHandler是输出到文件'test2.log'
file_handler = logging.FileHandler('test2.log')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
#TimedRotatingFileHandler是按照时间自动分割日志文件,具体规则在下面#3
time_rotating_file_handler = handlers.TimedRotatingFileHandler(filename='rotating_test.log', when='S', backupCount=3)
time_rotating_file_handler.setLevel(logging.DEBUG)
time_rotating_file_handler.setFormatter(formatter)
logger.addHandler(time_rotating_file_handler)
return logger
if __name__ == '__main__':
mylogger = mylogger()
for i in range(10):
i = i * 2
time.sleep(3)
mylogger.debug('result is %s' % i)
#1 日志级别
# DEBUG 详细信息,一般只在调试问题时使用。
# INFO 证明事情按预期工作。
# WARNING 某些没有预料到的事件的提示,或者在将来可能会出现的问题提示。例如:磁盘空间不足。但是软件还是会照常运行。
# ERROR 由于更严重的问题,软件已不能执行一些功能了。
# CRITICAL 严重错误,表明软件已不能继续运行了。
#
#
#2 formatter参数
# %(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 用户输出的消息
#
#
#3 按照时间自动分割日志文件
# time_rotating_file_handler = logging.handlers.TimedRotatingFileHandler(filename="loaddata.log", when="D", interval=1, backupCount=30)
# interval是时间间隔,backupCount用于指定保留的备份文件的个数(其中没有后缀的为最新日志文件)
# when参数是一个字符串。表示时间间隔的单位,不区分大小写。它有以下取值:
# S 秒
# M 分
# H 小时
# D 天
# W 每星期(interval==0时代表星期一)
# midnight 每天凌晨
#
#4 logging.handlers.RotatingFileHandler为按照大小自动分割日志文件
#
Python + logging 输出到屏幕,将log日志写入文件
标签:输出,logging,模块,setLevel,handler,file,日志 From: https://www.cnblogs.com/yy9knsg/p/17247721.html