vim logger_config.ini
[loggers]
keys=root,infoLogger,errorlogger
[logger_root]
level=DEBUG
handlers=infohandler,errorhandler
[logger_infoLogger]
handlers=infohandler
qualname=infoLogger
propagate=0
[logger_errorlogger]
handlers=errorhandler
qualname=errorlogger
propagate=0
###############################################
[handlers]
keys=infohandler,errorhandler
[handler_infohandler]
class=StreamHandler
level=INFO
formatter=form02
args=(sys.stdout,)
[handler_errorhandler]
class=FileHandler
level=ERROR
formatter=form01
args=('logs/mylog.log', 'a')
###############################################
[formatters]
keys=form01,form02
[formatter_form01]
format=%(asctime)s %(filename)s %(levelname)s %(message)s
datefmt=%Y-%m-%d %H:%M:%S
[formatter_form02]
format=%(asctime)s %(filename)s %(levelname)s %(message)s
datefmt=%Y-%m-%d %H:%M:%S
字段说明:
[loggers]
# 定义logger模块,root是父类,必需存在的,其它的是自定义。
# logging.getLogger(NAME)便相当于向logging模块注册了一种日志打印
# name 中用 . 表示 log 的继承关系
[handlers]
# 定义handler [formatters]
# 定义格式化输出 [logger_root]
# 实现上面定义的 logger 模块,必需是 [logger_xxxx] 这样的形式
# [logger_xxxx] logger_ 模块名称
# level 级别,级别有 DEBUG 、 INFO 、 WARNING 、 ERROR 、 CRITICAL
# handlers 处理类,可以有多个,用逗号分开
# qualname logger 名称,应用程序通过
# 日志格式
#--------------------------------------------------
# %(asctime)s 年-月-日 时-分-秒,毫秒 2013-04-26 20:10:43,745
# %(filename)s 文件名,不含目录
# %(pathname)s 目录名,完整路径
# %(funcName)s 函数名
# %(levelname)s 级别名
# %(lineno)d 行号
# %(module)s 模块名
# %(message)s 消息体
# %(name)s 日志模块名
# %(process)d 进程id
# %(processName)s 进程名
# %(thread)d 线程id
# %(threadName)s 线程名
使用方式:
from logging.config import fileConfig
fileConfig('loggin_config.ini')
logger=logging.getLogger('infoLogger')
logger.info('test1')
logger_error=logging.getLogger('errorhandler')
logger_error.error('test5')
[loggers]
keys=root,infoLogger,errorlogger
[logger_root]
level=DEBUG
handlers=infohandler,errorhandler
[logger_infoLogger]
handlers=infohandler
qualname=infoLogger
propagate=0
[logger_errorlogger]
handlers=errorhandler
qualname=errorlogger
propagate=0
###############################################
[handlers]
keys=infohandler,errorhandler
[handler_infohandler]
class=StreamHandler
level=INFO
formatter=form02
args=(sys.stdout,)
[handler_errorhandler]
class=FileHandler
level=ERROR
formatter=form01
args=('logs/mylog.log', 'a')
###############################################
[formatters]
keys=form01,form02
[formatter_form01]
format=%(asctime)s %(filename)s %(levelname)s %(message)s
datefmt=%Y-%m-%d %H:%M:%S
[formatter_form02]
format=%(asctime)s %(filename)s %(levelname)s %(message)s
datefmt=%Y-%m-%d %H:%M:%S
字段说明:
[loggers]
# 定义logger模块,root是父类,必需存在的,其它的是自定义。
# logging.getLogger(NAME)便相当于向logging模块注册了一种日志打印
# name 中用 . 表示 log 的继承关系
[handlers]
# 定义handler [formatters]
# 定义格式化输出 [logger_root]
# 实现上面定义的 logger 模块,必需是 [logger_xxxx] 这样的形式
# [logger_xxxx] logger_ 模块名称
# level 级别,级别有 DEBUG 、 INFO 、 WARNING 、 ERROR 、 CRITICAL
# handlers 处理类,可以有多个,用逗号分开
# qualname logger 名称,应用程序通过
# 日志格式
#--------------------------------------------------
# %(asctime)s 年-月-日 时-分-秒,毫秒 2013-04-26 20:10:43,745
# %(filename)s 文件名,不含目录
# %(pathname)s 目录名,完整路径
# %(funcName)s 函数名
# %(levelname)s 级别名
# %(lineno)d 行号
# %(module)s 模块名
# %(message)s 消息体
# %(name)s 日志模块名
# %(process)d 进程id
# %(processName)s 进程名
# %(thread)d 线程id
# %(threadName)s 线程名
使用方式:
from logging.config import fileConfig
fileConfig('loggin_config.ini')
logger=logging.getLogger('infoLogger')
logger.info('test1')
logger_error=logging.getLogger('errorhandler')
logger_error.error('test5')