python logging 模块

logging主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等

 

日记级别:

可以设置不同的日志等级,用于控制日志的输出,

日志等级:使用范围

FATAL:致命错误

CRITICAL:特别严重的事情,如内存耗尽、磁盘空间为空,一般很少使用

ERROR:发生错误时,如IO操作失败或者连接问题

WARNING:发生很重要的事件,但是并不是错误时,如用户登录密码错误

INFO:处理请求或者状态变化等日常事务

DEBUG:调试过程中使用DEBUG等级,如算法中每个循环的中间状态

 

#设置日志的级别和格式

logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')

 

ogging.basicConfig函数各参数:

filename:指定日志文件名,不设置时打印到控制台;

filemode:和file函数意义相同,指定日志文件的打开模式,'w'或者'a',默认为’a’

format:指定输出的格式和内容,format可以输出很多有用的信息,

 

参数:作用

%(levelno)s:打印日志级别的数值

%(levelname)s:打印日志级别的名称

%(pathname)s:打印当前执行程序的路径,其实就是sys.argv[0]

%(filename)s:打印当前执行程序名

%(funcName)s:打印日志的当前函数

%(lineno)d:打印日志的当前行号

%(asctime)s:打印日志的时间

%(thread)d:打印线程ID

%(threadName)s:打印线程名称

%(process)d:打印进程ID

%(message)s:打印日志信息

 

datefmt:指定时间格式,同time.strftime();

level:设置日志级别,默认为logging.WARNNING;

stream:指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略;

 

设置日志输出方式:


logger = logging.getLogger(__name__)

logger.setLevel(level = logging.INFO)
 
#设置文件方式输出

handler = logging.FileHandler("logger.txt")

handler.setLevel(logging.INFO)

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

handler.setFormatter(formatter)
#设置控制台方式输出

console = logging.StreamHandler()

console.setLevel(logging.INFO)

logger.addHandler(handler)

logger.addHandler(console)

#设置回滚日志
import logging.handlers

#定义一个RotatingFileHandler,最多备份3个日志文件,每个日志文最大1K

rHandler = logging.handlers.RotatingFileHandler("log.txt",maxBytes = 1*1024,backupCount = 3)

rHandler.setLevel(logging.INFO)

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

rHandler.setFormatter(formatter)
logger.addHandler(rHandler)

logger.info("Start print log")

logger.debug("Do something")

logger.warning("Something maybe fail.")

logger.info("Finish")

你可能感兴趣的:(python)