Scrapy-로깅
기술
Logging내장 된 로깅 시스템을 사용하고 기능과 클래스를 정의하여 애플리케이션과 라이브러리를 구현하는 이벤트 추적을 의미합니다. 로깅은 바로 사용할 수있는 자료이며 로깅 설정에 나열된 Scrapy 설정과 함께 작동 할 수 있습니다.
Scrapy는 몇 가지 기본 설정을 설정하고 명령을 실행할 때 scrapy.utils.log.configure_logging ()의 도움으로 이러한 설정을 처리합니다.
로그 수준
Python에서는 로그 메시지에 대해 5 가지 수준의 심각도가 있습니다. 다음 목록은 오름차순으로 표준 로그 메시지를 보여줍니다-
logging.DEBUG − 디버깅 메시지 용 (가장 낮은 심각도)
logging.INFO − 정보 메시지 용
logging.WARNING − 경고 메시지
logging.ERROR − 일반 오류
logging.CRITICAL − 심각한 오류 (가장 높은 심각도)
메시지를 기록하는 방법
다음 코드는 logging.info 수평.
import logging
logging.info("This is an information")
위의 로깅 메시지는 다음을 사용하여 인수로 전달할 수 있습니다. logging.log 다음과 같이 표시-
import logging
logging.log(logging.INFO, "This is an information")
이제 로거를 사용하여 로깅 헬퍼 로깅을 사용하여 메시지를 묶어 다음과 같이 로깅 메시지를 명확하게 볼 수 있습니다.
import logging
logger = logging.getLogger()
logger.info("This is an information")
로거가 여러 개있을 수 있으며 다음을 사용하여 이름을 가져 와서 액세스 할 수 있습니다. logging.getLogger 다음과 같이 표시되는 기능.
import logging
logger = logging.getLogger('mycustomlogger')
logger.info("This is an information")
사용자 정의 로거는 다음과 같이 표시된 모듈 경로를 포함하는 __name__ 변수를 사용하여 모든 모듈에 사용할 수 있습니다.
import logging
logger = logging.getLogger(__name__)
logger.info("This is an information")
스파이더에서 로깅
모든 스파이더 인스턴스에는 logger 그 안에 다음과 같이 사용할 수 있습니다-
import scrapy
class LogSpider(scrapy.Spider):
name = 'logspider'
start_urls = ['http://dmoz.com']
def parse(self, response):
self.logger.info('Parse function called on %s', response.url)
위 코드에서 로거는 Spider의 이름을 사용하여 생성되지만 다음 코드와 같이 Python에서 제공하는 사용자 정의 로거를 사용할 수 있습니다.
import logging
import scrapy
logger = logging.getLogger('customizedlogger')
class LogSpider(scrapy.Spider):
name = 'logspider'
start_urls = ['http://dmoz.com']
def parse(self, response):
logger.info('Parse function called on %s', response.url)
로깅 구성
로거는 자체적으로 보낸 메시지를 표시 할 수 없습니다. 따라서 이러한 메시지를 표시하기위한 "핸들러"가 필요하며 핸들러는 이러한 메시지를 파일, 이메일 및 표준 출력과 같은 각각의 대상으로 리디렉션합니다.
다음 설정에 따라 Scrapy는 로거에 대한 핸들러를 구성합니다.
로깅 설정
다음 설정은 로깅을 구성하는 데 사용됩니다-
그만큼 LOG_FILE 과 LOG_ENABLED 로그 메시지의 대상을 결정합니다.
당신이 설정할 때 LOG_ENCODING false로 설정하면 로그 출력 메시지가 표시되지 않습니다.
그만큼 LOG_LEVEL메시지의 심각도 순서를 결정합니다. 심각도가 낮은 메시지는 필터링됩니다.
그만큼 LOG_FORMAT 과 LOG_DATEFORMAT 모든 메시지의 레이아웃을 지정하는 데 사용됩니다.
당신이 설정할 때 LOG_STDOUT true로 설정하면 프로세스의 모든 표준 출력 및 오류 메시지가 로그로 리디렉션됩니다.
명령 줄 옵션
Scrapy 설정은 다음 표와 같이 명령 줄 인수를 전달하여 재정의 할 수 있습니다.
Sr. 아니요 | 명령 및 설명 |
---|---|
1 | --logfile FILE LOG_FILE 재정의 |
2 | --loglevel/-L LEVEL LOG_LEVEL 무시 |
삼 | --nolog LOG_ENABLED 를 False로 설정합니다. |
scrapy.utils.log 모듈
이 함수는 Scrapy에 대한 로깅 기본값을 초기화하는 데 사용할 수 있습니다.
scrapy.utils.log.configure_logging(settings = None, install_root_handler = True)
Sr. 아니요 | 매개 변수 및 설명 |
---|---|
1 | settings (dict, None) 루트 로거에 대한 핸들러를 생성하고 구성합니다. 기본적으로 None 입니다. |
2 | install_root_handler (bool) 루트 로깅 핸들러를 설치하도록 지정합니다. 기본적으로 True 입니다. |
위의 기능-
- Python 표준 로깅을 통해 경고 및 트위스트 로깅을 라우팅합니다.
- DEBUG를 Scrapy에 할당하고 ERROR 수준을 Twisted 로거에 할당합니다.
- LOG_STDOUT 설정이 true 인 경우 stdout을 로그로 라우팅합니다.
기본 옵션은 다음을 사용하여 재정의 할 수 있습니다. settings논의. 설정을 지정하지 않으면 기본값이 사용됩니다. install_root_handler가 true로 설정되면 루트 로거에 대한 핸들러를 작성할 수 있습니다. false로 설정하면 로그 출력이 설정되지 않습니다. Scrapy 명령을 사용할 때 configure_logging이 자동으로 호출되며 사용자 지정 스크립트를 실행하는 동안 명시 적으로 실행할 수 있습니다.
로깅 출력을 수동으로 구성하려면 다음을 사용할 수 있습니다. logging.basicConfig() 다음과 같이 표시-
import logging
from scrapy.utils.log import configure_logging
configure_logging(install_root_handler = False)
logging.basicConfig (
filename = 'logging.txt',
format = '%(levelname)s: %(your_message)s',
level = logging.INFO
)