logging日志模块

 参考:www.cnblogs.com/alex3714/articles/5161349.html

写入日志,运行一次,之后会一直追加到该文件,不会覆盖原来信息

import logging

logging.basicConfig(filename="log.log")

logging.debug("logging.debug")
logging.info("logging.info")
logging.warning("logging.warning")
logging.error("logging.error")
'''
结果:默认只写入等级为warning以及error的
WARNING:root:logging.warning
ERROR:root:logging.error
'''

 

指定写入等级

import logging

logging.basicConfig(filename="log.log",level=logging.DEBUG)

logging.debug("logging.debug")
logging.info("logging.info")
logging.warning("logging.warning")
logging.error("logging.error")
'''
结果:这里指定了等级debug之上的都能记录
DEBUG:root:logging.debug
INFO:root:logging.info
WARNING:root:logging.warning
ERROR:root:logging.error

'''

 

  • python使用logging模块纪录日志涉及四个主要类
  • logger提供了应用程序可以直接使用的接口;
  • handler将(logger创建的)日志纪录发送到合适的目的输出;
  • filter提供了细度设备来决定输出哪条日志纪录;
  • formatter决定日志纪录的最终输出格式。
%(name)s        Logger的名字
%(levelno)s 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathoname)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 用户输出的信息

import logging

logging.basicConfig(filename="log.log",
                    level=logging.DEBUG,
                    format="%(asctime)s %(filename)s:%(lineno)d - %(levelname)s: %(message)s",
                    datefmt="%m/%d/%Y %I:%M:%S %p")
logging.debug("logging.debug")
logging.info("logging.info")
logging.warning("我的logging.warning")
logging.error("logging.error")

 

import logging

logger = logging.getLogger("test.log")#设定日志放置位置
logger.setLevel(logging.DEBUG)#设定日志写入的等级


ch = logging.StreamHandler()#增加一个handler,这里是用于打印屏幕的handler
ch.setLevel(logging.WARNING)#设置打印到屏幕的等级,为了区分,这里设置与上面不同

fh = logging.FileHandler("access.log",encoding="utf-8")#定义屏幕日志放置文件名
fh.setLevel(logging.ERROR)#定义放置到屏幕文件的等级为error的

#定义屏幕日志写入格式
fh_format = logging.Formatter("%(asctime)s %(filename)s:%(lineno)d - %(levelname)s: %(message)s")
fh.setFormatter(fh_format)
#定义屏幕显示写入的格式
ch_format = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
ch.setFormatter(ch_format)

#将fh,ch加入到logger里
logger.addHandler(fh)
logger.addHandler(ch)

logger.warning("logging.warning")
logger.error("logging.error")

文件自动截断功能

import logging

from logging import handlers

logger = logging.getLogger("test")

log_file = "timelog.log"
#根据文件大小截断,之类是10字节,文件个数最多为3
fh = handlers.RotatingFileHandler(filename=log_file,maxBytes=10,backupCount=3)

#根据文件时间截断,这里5秒,文件最多生成3个,when,S:秒   M:分  H:小时  W:每星期,interval == 0,则是周一  midnight表示每天凌晨
# fh = handlers.TimedRotatingFileHandler(filename=log_file,when="S",interval=5,backupCount=3)


formatter = logging.Formatter('%(asctime)s %(module)s:%(lineno)d %(message)s')

fh.setFormatter(formatter)

logger.addHandler(fh)


logger.warning("test1")
logger.warning("test12")
logger.warning("test13")
logger.warning("test14")
logger.warning("test15")
logger.warning("test16")
大小截断

 

import logging

from logging import handlers

logger = logging.getLogger("test")

log_file = "timelog.log"


#根据文件时间截断,这里5秒,文件最多生成3个,when,S:秒   M:分  H:小时  W:每星期,interval == 0,则是周一  midnight表示每天凌晨
fh = handlers.TimedRotatingFileHandler(filename=log_file,when="S",interval=5,backupCount=3)


formatter = logging.Formatter('%(asctime)s %(module)s:%(lineno)d %(message)s')

fh.setFormatter(formatter)

logger.addHandler(fh)
import time

logger.warning("test1")
time.sleep(2)
logger.warning("test12")
time.sleep(2)
logger.warning("test13")
logger.warning("test14")
time.sleep(2)
logger.warning("test15")
logger.warning("test16")
时间截断

 

posted @ 2018-01-04 12:27  雨之愿风  阅读(209)  评论(0编辑  收藏  举报