IPython 노트북의 로깅 모듈에서 출력 가져 오기
IPython 노트북 내부에서 다음을 실행할 때 출력이 표시되지 않습니다.
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug("test")
누구나 노트북에서 "테스트"메시지를 볼 수 있도록 만드는 방법을 알고 있습니까?
다음을 시도하십시오.
import logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logging.debug("test")
logging.basicConfig 에 따르면 :
기본 Formatter를 사용하여 StreamHandler를 만들고 루트 로거에 추가하여 로깅 시스템에 대한 기본 구성을 수행합니다. 디버그 (), info (), warning (), error () 및 critical () 함수는 루트 로거에 대해 핸들러가 정의되지 않은 경우 자동으로 basicConfig ()를 호출합니다.
이 함수는 루트 로거에 이미 구성된 핸들러가있는 경우 아무 작업도 수행하지 않습니다.
ipython 노트북이 어딘가에서 basicConfig (또는 세트 핸들러)를 호출하는 것 같습니다.
여전히을 사용하려면 다음 basicConfig
과 같이 로깅 모듈을 다시로드하십시오.
from importlib import reload # Not needed in Python 2
import logging
reload(logging)
logging.basicConfig(format='%(asctime)s %(levelname)s:%(message)s', level=logging.DEBUG, datefmt='%I:%M:%S')
내 이해는 IPython 세션이 로깅을 시작하므로 basicConfig가 작동하지 않습니다. 다음은 나를 위해 작동하는 설정입니다 (거의 모든 노트북에 사용하고 싶기 때문에 이것이 심하게 보이지 않기를 바랍니다).
import logging
logger = logging.getLogger()
fhandler = logging.FileHandler(filename='mylog.log', mode='a')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fhandler.setFormatter(formatter)
logger.addHandler(fhandler)
logger.setLevel(logging.DEBUG)
이제 실행할 때 :
logging.error('hello!')
logging.debug('This is a debug message')
logging.info('this is an info message')
logging.warning('tbllalfhldfhd, warning.')
다음을 포함하는 노트북과 같은 디렉토리에 "mylog.log"파일이 있습니다.
2015-01-28 09:49:25,026 - root - ERROR - hello!
2015-01-28 09:49:25,028 - root - DEBUG - This is a debug message
2015-01-28 09:49:25,029 - root - INFO - this is an info message
2015-01-28 09:49:25,032 - root - WARNING - tbllalfhldfhd, warning.
IPython 세션을 다시 시작하지 않고 이것을 다시 실행하면 두 개의 파일 핸들러가 정의되므로 파일에 중복 항목을 작성합니다.
stderr이 logging
모듈 의 기본 스트림 이므로 IPython 및 Jupyter 노트북에서 스트림을 stdout으로 구성하지 않으면 아무것도 표시되지 않을 수 있습니다.
import logging
import sys
logging.basicConfig(format='%(asctime)s | %(levelname)s : %(message)s',
level=logging.INFO, stream=sys.stdout)
logging.info('Hello world!')
다음을 실행하여 로깅을 구성 할 수 있습니다. %config Application.log_level="INFO"
자세한 정보는 IPython 커널 옵션을 참조하십시오.
지금 저에게 도움이 된 것 (Jupyter, 노트북 서버 : 5.4.1, IPython 7.0.1)
import logging
logging.basicConfig()
logger = logging.getLogger('Something')
logger.setLevel(logging.DEBUG)
Now I can use logger to print info, otherwise I would see only message from the default level (logging.WARNING
) or above.
I setup a logger for both file and I wanted it to show up on the notebook. Turns out adding a filehandler clears out the default stream handlder.
logger = logging.getLogger()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# Setup file handler
fhandler = logging.FileHandler('my.log')
fhandler.setLevel(logging.DEBUG)
fhandler.setFormatter(formatter)
# Configure stream handler for the cells
chandler = logging.StreamHandler()
chandler.setLevel(logging.DEBUG)
chandler.setFormatter(formatter)
# Add both handlers
logger.addHandler(fhandler)
logger.addHandler(chandler)
logger.setLevel(logging.DEBUG)
# Show the handlers
logger.handlers
# Log Something
logger.info("Test info")
logger.debug("Test debug")
logger.error("Test error")
참고URL : https://stackoverflow.com/questions/18786912/get-output-from-the-logging-module-in-ipython-notebook
'developer tip' 카테고리의 다른 글
고정 된 PostgreSQL 데이터베이스 백업 / 복원 (0) | 2020.08.08 |
---|---|
NSNumber를 증가시키는 방법 (0) | 2020.08.08 |
높이 변경시 이미지 종횡비 유지 (0) | 2020.08.07 |
ESLint 예기치 않은 isNaN 사용 (0) | 2020.08.07 |
maven 빌드 실패 : Javac 컴파일러를 찾을 수 없음 : jre 또는 jdk 문제 (0) | 2020.08.07 |