本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议进行许可。允许非商业转载,但应注明作者及出处。
作者:liuyuan_jq
2011-03-30
# 创建一个日志对象,可以带一个名字,可以缺省root_logger = logging.getLogger('')
# 设置日志级别,小于指定级别的信息被忽略,缺省: logging.WARNINGroot_logger.setLevel(logging.DEBUG)
# 创建一个Handler日志处理器console = logging.StreamHandler(sys.stderr)console_format = '%(message)s'# 创建一个日志格式器,规范日志的输出格式,缺省为:%(messages)s# 将格式器绑定到处理器上console.setFormatter(logging.Formatter(console_format))# 设置控制台显示级别console.setLevel(logging.INFO) # TODO: command line switch# 将处理器绑定到日志对象上root_logger.addHandler(console)
# RotatingFileHandler 发送信息到磁盘文件,并且限制最大的日志文件大小,并适时轮徇file_handler = logging.handlers.RotatingFileHandler( 'logging_example.log', # use a full path )file_format = '%(asctime)s %(levelname)6s %(name)s %(message)s'file_handler.setFormatter(logging.Formatter(file_format))file_handler.setLevel(logging.DEBUG)root_logger.addHandler(file_handler)
################################################################################# 返回一个logger,可以指定名字,如果没有指定名字则返回根logger。# 指定的名字典型的为以点分隔的分层次的名字。# 选择一个恰当的名字,让别人知道,谁在输出日志。# 所有使用相同名字调用这个函数都会返回相同的logger实例。#这意味着logger实例不需要在应用中到处传递。################################################################################# Log sample messages with different levelslog = logging.getLogger(__name__)log.info('on the console and in the file')log.debug('only in the file')log.error('simple error message')
################################################################################# 结果# logging_example.log# 2011-03-30 10:17:40,104 INFO __main__ on the console and in the file# 2011-03-30 10:17:40,105 DEBUG __main__ only in the file# 2011-03-30 10:17:40,105 ERROR __main__ simple error message# 2011-03-30 10:17:40,106 ERROR __main__ failure message# console# on the console and in the file# simple error message# failure message################################################################################
#!/usr/bin/env python# encoding: utf-8"""Sending log output to a file and the console at the same time."""import loggingimport logging.handlersimport sys# Log verbosely# 创建一个日志对象,可以带一个名字,可以缺省root_logger = logging.getLogger('')# 设置日志级别,小于指定级别的信息被忽略,缺省: logging.WARNINGroot_logger.setLevel(logging.DEBUG)################################################################################# Set up console output to stderr# 创建一个Handler日志处理器console = logging.StreamHandler(sys.stderr)console_format = '%(message)s'# 创建一个日志格式器,规范日志的输出格式,缺省为:%(messages)s# 将格式器绑定到处理器上console.setFormatter(logging.Formatter(console_format))# 设置控制台显示级别console.setLevel(logging.INFO) # TODO: command line switch# 将处理器绑定到日志对象上root_logger.addHandler(console)################################################################################# Include debug messages when logging to a file# RotatingFileHandler 发送信息到磁盘文件,并且限制最大的日志文件大小,并适时轮徇file_handler = logging.handlers.RotatingFileHandler( 'logging_example.log', # use a full path )file_format = '%(asctime)s %(levelname)6s %(name)s %(message)s'file_handler.setFormatter(logging.Formatter(file_format))file_handler.setLevel(logging.DEBUG)root_logger.addHandler(file_handler)################################################################################# 返回一个logger,可以指定名字,如果没有指定名字则返回根logger。# 指定的名字典型的为以点分隔的分层次的名字。# 选择一个恰当的名字,让别人知道,谁在输出日志。# 所有使用相同名字调用这个函数都会返回相同的logger实例。#这意味着logger实例不需要在应用中到处传递。################################################################################# Log sample messages with different levelslog = logging.getLogger(__name__)log.info('on the console and in the file')log.debug('only in the file')log.error('simple error message')# Replace excepthook with loggerdef log_exception(exc_type, exc_value, traceback): logging.getLogger(__name__).error(exc_value)sys.excepthook = log_exception# Send exceptions to the logger automaticallyraise RuntimeError('failure message')################################################################################# 结果# logging_example.log# 2011-03-30 10:17:40,104 INFO __main__ on the console and in the file# 2011-03-30 10:17:40,105 DEBUG __main__ only in the file# 2011-03-30 10:17:40,105 ERROR __main__ simple error message# 2011-03-30 10:17:40,106 ERROR __main__ failure message# console# on the console and in the file# simple error message# failure message################################################################################