网上有很多介绍logger的配置,但是我在执行过程中发现scrapy中使用,logger.cfg的文件的位置还有要求,因为scrapy和普通的python脚本根目录是有区别的
下图绿色字体表示scrapy的根是与scrapy.cfg的直接上级目录
而红色字体的根是与settings.py的直接上级目录,
这里是有区别的,要想通用,最简单的办法,就是在这两个根目录下面都加上logger.cfg
文件即可
1 logger.cfg
注意/usr/local/log/eie.log
和/usr/local/log/scrapy.log
文件事先得存在
#logger.cfg
[loggers]
keys=root,eie,scrapy
[handlers]
keys=streamHandler,timeHandler,scrapyHandler
[formatters]
keys=timeFormatter,streamFormatter
[formatter_streamFormatter]
format=[%(asctime)s][%(filename)s][line:%(lineno)d][%(levelname)s] %(message)s
datefmt=%Y-%m-%d %H:%M:%S
[formatter_timeFormatter]
format=[%(asctime)s][%(filename)s][line:%(lineno)d][%(levelname)s] %(message)s
datefmt=%Y-%m-%d %H:%M:%S
[logger_root]
level=DEBUG
handlers=streamHandler,timeHandler
[logger_eie]
level=DEBUG
qualname=eie
handlers=timeHandler
propagate=0
[logger_scrapy]
level=DEBUG
qualname=scrapy.utils.log
handlers=scrapyHandler
propagate=0
[handler_streamHandler]
class=StreamHandler
level=NOTSET
formatter=streamFormatter
args=(sys.stderr,)
[handler_timeHandler]
class=handlers.TimedRotatingFileHandler
level=DEBUG
formatter=streamFormatter
args=('F:/pythonwork/eie/log/eie.log', 'd', 1 , 10 )
[handler_scrapyHandler]
class=handlers.TimedRotatingFileHandler
level=DEBUG
formatter=streamFormatter
args=('F:/pythonwork/eie/log/scrapy.log', 'd', 1 , 10 )
2 udf_config.py
# -*- coding: utf-8 -*-
'''
Created on 2017年2月14日
自定义配置框架
@author: dzm
'''
# 日志配置
import logging.config
logging.config.fileConfig('../logger.cfg')
logger = logging.getLogger('eie')
scrapyLogger = logging.getLogger('eieScrapy')
3 日志的使用
在py脚本中引用变量就可以了。
from eie.middlewares import udf_config
logger = udf_config.logger