IPthon 노트북의 로깅 모듈에서 출력 가져오기
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에 따라:
기본 포맷터를 사용하여 StreamHandler를 만들고 루트 로거에 추가하여 로깅 시스템에 대한 기본 구성을 수행합니다.루트 로거에 대해 정의된 핸들러가 없는 경우 debug(), info(), warning(), error() 및 critical() 함수는 basicConfig()를 자동으로 호출합니다.
루트 로거에 이미 구성된 핸들러가 있는 경우 이 기능은 아무 동작도 하지 않습니다.
ipython 노트북이 어딘가에서 basicConfig(또는 set handler)를 호출하는 것 같습니다.
그래도 사용하려면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!')
지금 나에게 도움이 된 것(Jupiter, 노트북 서버: 5.4.1, IPython 7.0.1)
import logging
logging.basicConfig()
logger = logging.getLogger('Something')
logger.setLevel(logging.DEBUG)
이제 로거를 사용하여 정보를 인쇄할 수 있습니다. 그렇지 않으면 기본 수준의 메시지만 표시됩니다.logging.WARNING
) 이상.
다음을 실행하여 로깅을 구성할 수 있습니다.%config Application.log_level="INFO"
자세한 내용은 IPython 커널 옵션을 참조하십시오.
로깅 버전 3.8 a 기준force
기존 핸들러를 제거하는 매개 변수가 추가되었습니다. 이 매개 변수는basicConfig
일하기 위해.이것은 IPython 버전 7.29.0 및 Jupyter Lab 버전 3.2.1에서 작동했습니다.
import logging
logging.basicConfig(level=logging.DEBUG,
force = True)
logging.debug("test")
두 파일 모두 로거를 설정했는데 노트북에 표시되기를 원했습니다.파일 처리기를 추가하면 기본 스트림 처리기가 지워집니다.
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")
저는 이것에 대한 간단하고 간단한 대답과 멋진 스타일의 출력을 원했기 때문에 여기 제 추천이 있습니다.
import sys
import logging
logging.basicConfig(
format='%(asctime)s [%(levelname)s] %(name)s - %(message)s',
level=logging.INFO,
datefmt='%Y-%m-%d %H:%M:%S',
stream=sys.stdout,
)
log = logging.getLogger('notebook')
그러면 사용할 수 있습니다.log.info()
또는 다음과 같은 출력을 가진 노트북의 다른 로깅 수준
2020-10-28 17:07:08 [INFO] notebook - Hello world
2020-10-28 17:12:22 [INFO] notebook - More info here
2020-10-28 17:12:22 [INFO] notebook - And some more
세우다
import logging
# make a handler
handler = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
# add it to the root logger
logging.getLogger().addHandler(handler)
사용자 자신의 로거에서 로그
# make a logger for this notebook, set verbosity
logger = logging.getLogger(__name__)
logger.setLevel('DEBUG')
# send messages
logger.debug("debug message")
logger.info("so much info")
logger.warning("you've veen warned!")
logger.error("bad news")
logger.critical("really bad news")
2021-09-02 18:18:27,397 - __main__ - DEBUG - debug message
2021-09-02 18:18:27,397 - __main__ - INFO - so much info
2021-09-02 18:18:27,398 - __main__ - WARNING - you've veen warned!
2021-09-02 18:18:27,398 - __main__ - ERROR - bad news
2021-09-02 18:18:27,399 - __main__ - CRITICAL - really bad news
다른 라이브러리에서 로깅 캡처
logging.getLogger('google').setLevel('DEBUG')
from google.cloud import storage
client = storage.Client()
2021-09-02 18:18:27,415 - google.auth._default - DEBUG - Checking None for explicit credentials as part of auth process...
2021-09-02 18:18:27,416 - google.auth._default - DEBUG - Checking Cloud SDK credentials as part of auth process...
2021-09-02 18:18:27,416 - google.auth._default - DEBUG - Cloud SDK credentials not found on disk; not using them
...
언급URL : https://stackoverflow.com/questions/18786912/get-output-from-the-logging-module-in-ipython-notebook
'programing' 카테고리의 다른 글
데이터 프레임에서 특정 열 추출 (0) | 2023.06.16 |
---|---|
Vuex에서 개체를 올바르게 혼합하고 격리하는 방법 (0) | 2023.06.16 |
애플리케이션을 릴리스하기 전에 NSLog를 비활성화해야 합니까? (0) | 2023.06.16 |
C/C++의 열에 주조 (0) | 2023.06.16 |
생성자가 서명 new와 일치하지 않습니다. (0) | 2023.06.16 |