标签:
# python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为
# debug(), info(), warning(), error() and critical() 5个级别
# Level When it’s used
# DEBUG Detailed information, typically of interest only when diagnosing problems.
# INFO Confirmation that things are working as expected.
# WARNING An indication that something unexpected happened, or indicative of some problem in the near future (e.g. ‘disk space low’). The software is still working as expected.
# ERROR Due to a more serious problem, the software has not been able to perform some function.
# CRITICAL A serious error, indicating that the program itself may be unable to continue running.
不同的日志级别对应不同的数值,具体如下:
CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
格式化:
logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘)
%(name)s Name of the logger (logging channel)
%(levelno)s Numeric logging level for the message (DEBUG, INFO,
WARNING, ERROR, CRITICAL)
%(levelname)s Text logging level for the message ("DEBUG", "INFO",
"WARNING", "ERROR", "CRITICAL")
%(pathname)s Full pathname of the source file where the logging
call was issued (if available)
%(filename)s Filename portion of pathname
%(module)s Module (name portion of filename)
%(lineno)d Source line number where the logging call was issued
(if available)
%(funcName)s Function name
%(created)f Time when the LogRecord was created (time.time()
return value)
%(asctime)s Textual time when the LogRecord was created
%(msecs)d Millisecond portion of the creation time
%(relativeCreated)d Time in milliseconds when the LogRecord was created,
relative to the time the logging module was loaded
(typically at application startup time)
%(thread)d Thread ID (if available)
%(threadName)s Thread name (if available)
%(process)d Process ID (if available)
%(message)s The result of record.getMessage(), computed just as
the record is emitted
打印日志到屏幕:
##日志打印到屏幕
logging.warning("user [alex] attempted wrong password more than 3 times")
logging.critical("server is down")
日志输出到文件:
logging.basicConfig(filename=‘python.log‘,level=logging.INFO,format=‘%(asctime)s %(message)s‘, datefmt=‘%m/%d/%Y %I:%M:%S %p‘) logging.debug(‘This message should go to the log file‘) logging.info(‘So should this‘) logging.warning(‘And this, too‘)
屏幕日志双向输出:
#如果需要日志和屏幕同时输出的话,需要下面的操作
# The logging library takes a modular approach and offers several categories of components: loggers, handlers, filters, and formatters.
# Loggers expose the interface that application code directly uses.
# Handlers send the log records (created by loggers) to the appropriate destination.
# Filters provide a finer grained facility for determining which log records to output.
# Formatters specify the layout of log records in the final output.
# 1、创建一个log对象
logger=logging.getLogger(‘test_log‘)
logger.setLevel(logging.DEBUG)
# 2、创建console handler 并设置等级
ch = logging.StreamHandler()
ch.setLevel(logging.WARNING)
fh = logging.FileHandler()
fh.setLevel(logging.DEBUG)
# 3、创建日志格式
formatter = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘)
ch.setFormatter(formatter)
fh.setFormatter(formatter)
# 4、将日志实例添加到handler
logger.addHandler(ch)
logger.addHandler(fh)
# 5、打印日志测试
import logging
#create logger
logger = logging.getLogger(‘TEST-LOG‘)
logger.setLevel(logging.DEBUG)
# create console handler and set level to debug
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
# create file handler and set level to warning
fh = logging.FileHandler("python.log")
fh.setLevel(logging.WARNING)
# create formatter
formatter = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘)
# add formatter to ch and fh
ch.setFormatter(formatter)
fh.setFormatter(formatter)
# add ch and fh to logger
logger.addHandler(ch)
logger.addHandler(fh)
# ‘application‘ code
logger.debug(‘debug message‘)
logger.info(‘info message‘)
logger.warn(‘warn message‘)
logger.error(‘error message‘)
logger.critical(‘critical message‘)
标签:
原文地址:http://www.cnblogs.com/mayesheng/p/5575353.html