Snowpark Checkpoints 라이브러리: 로깅¶
Snowpark Checkpoints는 Python에 내장된 로깅 모듈을 사용하여 내부 작업에 대한 로그 메시지를 제공합니다. 라이브러리는 라이브러리의 동작을 이해하고 문제를 진단하는 데 사용할 수 있는 다양한 로그 수준 에서 로그 메시지를 내보냅니다.
로깅 구조¶
Snowpark Checkpoints는 모듈 수준 로깅 접근 방식을 따르며, 메시지를 로깅해야 하는 각 Python 모듈이 자체 로거를 정의하고 로거의 이름이 모듈의 정규화된 이름과 일치합니다.
Snowpark Checkpoints를 구성하는 각 패키지는 최상위 로거를 정의합니다. 이 로거는 패키지 자체의 이름을 따서 명명되며 해당 패키지 내의 모든 모듈 수준 로거의 상위 항목으로 작동합니다. 최상위 로거는 NullHandler 로 초기화되어 로깅을 명시적으로 구성하지 않는 한 로그 메시지가 의도하지 않은 출력을 생성하지 않도록 합니다. 최상위 로거에 적용된 모든 로깅 구성은 해당 패키지 내의 모든 모듈 로거에 자동으로 적용됩니다.
다음은 Snowpark Checkpoints의 최상위 로거 이름입니다.
패키지 이름 |
최상위 로거 이름 |
---|---|
|
|
|
|
|
|
|
|
이 모듈 수준 접근 방식을 사용하면 로깅 출력을 세밀하게 제어할 수 있으며 로그가 상위 로거의 설정을 상속하는 동시에 로그의 출처에 대한 정확한 정보를 내보낼 수 있습니다.
로깅 구성¶
Snowpark Checkpoints는 기본 로깅 구성을 제공하지 않습니다. 로그 메시지를 보려면 애플리케이션에서 로깅을 명시적으로 구성해야 합니다.
애플리케이션에 이미 Python의 기본 제공 로깅 모듈을 사용한 로깅 구성이 있는 경우, 추가 구성 없이도 Snowpark Checkpoint에서 전송되는 로그 메시지를 볼 수 있습니다. 로깅 구성이 없는 경우 basicConfig 함수를 사용하거나 사용자 지정 구성을 생성하여 로깅을 설정할 수 있습니다.
메인 스크립트나 애플리케이션을 초기화하는 모듈 등 애플리케이션의 진입점에서 로그를 한 번 구성하는 것이 좋습니다. 이렇게 하면 라이브러리 구성 요소를 사용하기 전에 로그를 설정할 수 있습니다. 라이브러리를 독립형 스크립트 내에서 사용하는 경우 해당 스크립트의 시작 부분에 로그를 설정해야 합니다. 다음은 시작하는 데 도움이 되는 몇 가지 예입니다.
기본 로깅 구성¶
로깅을 활성화하는 가장 간단하고 빠른 방법은 basicConfig 함수를 사용하는 것입니다. 이 함수를 사용하면 로깅 모듈 계층 구조에서 모든 로거의 상위 항목인 루트 로거를 구성할 수 있습니다.
다음은 지정된 로그 수준 이상에서 로그 메시지를 캡처하고 콘솔에 인쇄하도록 루트 로거를 설정하는 방법을 보여주는 예입니다.
import logging
logging.basicConfig(
level=logging.DEBUG, # Adjust the log level as needed
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
고급 로깅 구성¶
고급 로깅 구성의 경우 logging.config 모듈을 사용하여 로깅을 설정할 수 있습니다. 이 접근 방식을 사용하면 사용자 지정 로거, 처리기, 포맷터를 정의하고 사전을 사용하여 구성할 수 있습니다.
다음 예에서는 메시지를 콘솔과 파일에 로깅하는 사용자 지정 구성을 사용하여 루트 로거를 설정하는 방법을 설명합니다.
import logging.config
from datetime import datetime
LOGGING_CONFIG = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"standard": {
"format": "{asctime} - {name} - {levelname} - {message}",
"style": "{",
"datefmt": "%Y-%m-%d %H:%M:%S",
},
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"formatter": "standard",
"level": "DEBUG", # Adjust the log level as needed
},
"file": {
"class": "logging.FileHandler",
"formatter": "standard",
"filename": f"app_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.log",
"level": "DEBUG", # Adjust the log level as needed
"encoding": "utf-8",
},
},
"root": {
"handlers": ["console", "file"],
"level": "DEBUG", # Adjust the log level as needed
},
}
logging.config.dictConfig(LOGGING_CONFIG)
특정 패키지에 대한 로깅 활성화하기¶
다른 로거에 영향을 주지 않고 특정 Snowpark Checkpoints 패키지에 대한 로깅을 구성하려면 해당 패키지의 최상위 로거 이름을 사용하고 필요에 따라 사용자 지정 처리기 및 포맷터를 적용하면 됩니다. 최상위 수준 로거에 구성을 적용하면 모든 모듈 수준 로거가 해당 구성을 상속받게 됩니다.
다음 예에서는 다음 패키지에 대해서만 로깅을 구성하는 방법을 보여줍니다.
snowpark-checkpoints-collectors
snowpark-checkpoints-configuration
snowpark-checkpoints-validators
snowpark-checkpoints-hypothesis
import logging.config
from datetime import datetime
LOGGING_CONFIG = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"standard": {
"format": "{asctime} - {name} - {levelname} - {message}",
"style": "{",
"datefmt": "%Y-%m-%d %H:%M:%S",
},
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"formatter": "standard",
"level": "DEBUG", # Adjust the log level as needed
},
"file": {
"class": "logging.FileHandler",
"formatter": "standard",
"filename": f"app_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.log",
"level": "DEBUG", # Adjust the log level as needed
"encoding": "utf-8",
},
},
"loggers": {
"snowflake.snowpark_checkpoints_collector": {
"handlers": ["console", "file"],
"level": "DEBUG", # Adjust the log level as needed
"propagate": False,
},
"snowflake.snowpark_checkpoints": {
"handlers": ["console", "file"],
"level": "DEBUG", # Adjust the log level as needed
"propagate": False,
},
"snowflake.snowpark_checkpoints_configuration": {
"handlers": ["console", "file"],
"level": "DEBUG", # Adjust the log level as needed
"propagate": False,
},
"snowflake.hypothesis_snowpark": {
"handlers": ["console", "file"],
"level": "DEBUG", # Adjust the log level as needed
"propagate": False,
},
},
}
logging.config.dictConfig(LOGGING_CONFIG)
Python의 로깅 모듈에 대한 자세한 내용은 Python 로깅 설명서 를 참조하십시오.