概述
python按日志时间与按日志大小切分日志
2018-09-15
有一种简便方法实现按日志时间与按日志大小对日志进行切分,即通过python配置文件实现。
该配置文件分为三个部分。
第一部分定义日志模块及其实现。如下面代码所示,下面代码定义了三个日志配置名root,example及example01。
###############################################
[loggers]
keys=root,example,example01
#--------------------------------------------------
# 实现上面定义的logger模块,必需是[logger_xxxx]这样的形式
#--------------------------------------------------
# [logger_xxxx] logger_模块名称
# level 级别,级别有DEBUG、INFO、WARNING、ERROR、CRITICAL
# handlers 处理类,可以有多个,用逗号分开,实现见第二部分
# qualname logger名称,应用程序通过 logging.getLogger获取。对于不能获取的名称,则记录到root模块。
# propagate 是否继承父类的log信息,0:否 1:是
[logger_root]
level=DEBUG
handlers=consoleHandler,rotateFileHandler
[logger_example]
level=DEBUG
handlers=consoleHandler,rotateFileHandler
qualname=example
propagate=0
[logger_example01]
level=DEBUG
handlers=consoleHandler,timedrotateFileHandler
qualname=example01
propagate=0
###############################################
第二部分定义每个模块的Handler。其中rotateFileHandler用来根据日志文件大小进行切分,而timedrotateFileHandler则根据时间进行日志切分。
###############################################
#--------------------------------------------------
# handler
#--------------------------------------------------
# [handler_xxxx]
# class handler类名
# level 日志级别
# formatter 日志格式,见第三部分
# args handler初始化函数参数
[handlers]
keys=consoleHandler,rotateFileHandler,timedrotateFileHandler
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[handler_rotateFileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=("test.log", "a", 1000, 9)
[handler_timedrotateFileHandler]
class=handlers.TimedRotatingFileHandler
level=DEBUG
formatter=form02
args=("upload.log","midnight", 1)
###############################################
第三部分定义日志格式,下面定义了两种日志格式。
###############################################
#--------------------------------------------------
# 日志格式
#--------------------------------------------------
# %(asctime)s 年-月-日 时-分-秒,毫秒 2013-04-26 20:10:43,745
# %(filename)s 文件名,不含目录
# %(pathname)s 目录名,完整路径
# %(funcName)s 函数名
# %(levelname)s 级别名
# %(lineno)d 行号
# %(module)s 模块名
# %(message)s 消息体
# %(name)s 日志模块名
# %(process)d 进程id
# %(processName)s 进程名
# %(thread)d 线程id
# %(threadName)s 线程名
[formatters]
keys=simpleFormatter,form01
[formatter_simpleFormatter]
format=[%(asctime)s](%(levelname)s)%(name)s : %(message)s
[formatter_form01]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
datefmt=%a, %d %b %Y %H:%M:%S
###############################################
测试代码如下,假设上述配置文件名为logger.conf。
#-*- coding:utf-8 -*-
import logging
import logging.config
# from logging.handlers import RotatingFileHandler
logging.config.fileConfig("logger.conf")
# example01为根据日志大小切分日志的配置名
logger = logging.getLogger("example01")
logger.debug("This is debug message")
logger.info("This is info message")
logger.warning("This is warning message")
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。
http://www.pinlue.com/style/images/nopic.gif
最后
以上就是风中凉面为你收集整理的python 根据时间截取日志内容_python按日志时间与按日志大小切分日志的全部内容,希望文章能够帮你解决python 根据时间截取日志内容_python按日志时间与按日志大小切分日志所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复