码迷,mamicode.com
首页 > 其他好文 > 详细

logging模块

时间:2018-09-26 16:04:18      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:handlers   格式   module   ons   单位   取值   文本   UNC   coding   

logging基本用法

import logging
import sys

logging.basicConfig(filename=‘app.log‘,
level=logging.INFO,format=‘%(asctime)s %(filename)s--%(message)s‘,datefmt=‘%m/%d/%Y %I:%M:%S %p‘)

#日志级别从低到高
logging.debug(‘This message should go to the 厉害了‘)
logging.info(‘So should this‘)
logging.warning(‘And this, too‘)
logging.error("test eror")
logging.critical("server is 厉害了")

日志格式

%(name)sLogger的名字

%(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用户输出的消息

logging输出到屏幕和文件

import logging

#create logger #默认输出到屏幕
logger = logging.getLogger(‘TEST_LOG‘) #logger名
logger.setLevel(logging.DEBUG)

#create console handler and set level to debug 输出到屏幕
ch = logging.StreamHandler()
ch.setLevel(logging.WARNING)

#create file handler and set level to warning #输出到文件
fh = logging.FileHandler("access.log")
fh.setLevel(logging.ERROR)

#create formatter 输出的日志格式
fh_formatter = logging.Formatter(‘%(asctime)s ‘
‘- %(levelname)s‘
‘ - %(message)s‘
‘-%(module)s‘
‘%(name)s‘)
ch_formatter = logging.Formatter(
‘- %(levelname)s %(filename)s: - %(message)s‘)

fh.setFormatter(fh_formatter)
ch.setFormatter(ch_formatter)
logger.addHandler(fh)
logger.addHandler(ch)

logger.debug(‘This message should go to the log file‘)
logger.info(‘So should this‘)
logger.warning(‘And this, too‘)
logger.error("test eror")
logger.critical("server is down")

logging自动截断

when参数是一个字符串。表示时间间隔的单位,不区分大小写。它有以下取值:

S 秒

M 分

H 小时

D 天

W 每星期(interval==0时代表星期一)

midnight 每天凌晨

import logging

from logging import handlers

logger = logging.getLogger("TEST")

log_file = "time.log"
#fh = handlers.RotatingFileHandler(filename=log_file,backupCount=3,maxBytes=10,encoding="utf-8") #按字节和文件数量截断
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 time #按时间截断
logger.warning("test1")
time.sleep(3)
logger.warning("test12")
time.sleep(3)
logger.warning("test13")
time.sleep(3)
logger.warning("test14")
logger.warning("test15")
time.sleep(3)
logger.warning("test16")

logging模块

标签:handlers   格式   module   ons   单位   取值   文本   UNC   coding   

原文地址:http://blog.51cto.com/12992048/2286071

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!