logs = logging.getLogger("APACHE")
logs.setLevel(logging.INFO) # 如果此处设置了等级,则优先级最高,如果下面对屏幕或文件单独设置的日志等级 优先级都低于此处等级
# 定义一个屏幕输出的log
srlog = logging.StreamHandler()
srlog.setLevel(logging.INFO)
# 定义一个输出文件的log
filelog = logging.FileHandler("test.log")
filelog.setLevel(logging.INFO)
log_format = logging.Formatter("%(asctime)s - %(filename)s - %(levelname)s - %(module)s - %(message)s")
# 将输出格式加到屏幕输出句柄、文件输出句柄的格式中
srlog.setFormatter(log_format)
filelog.setFormatter(log_format)
# 将两个句柄放入log日志对象中
logs.addHandler(srlog)
logs.addHandler(filelog)
# 开始日志输出
logs.debug("DEBUG中文")
logs.warning("This is a WARNING中文测试")
logs.info("This is a INFO 中文")
logs.error("This is a ERROR 中文测试")
logging的Formatter格式包括如下类型:
%(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