처리기가 다르므로 사서함이나 원격 서버에 레코드를 보낼 수도 있습니다. 사용자 지정 로깅 처리기를 직접 작성할 수도 있습니다. 기본 튜토리얼, 고급 자습서 및 로깅 요리 책 : 나는 당신에게 세부 사항을 말할 않을거야, 공식 문서를 참조하시기 바랍니다. 레벨은 개발자가 설정하거나 저장된 로깅 구성을 로드하여 로거와 연결할 수도 있습니다. 로거에서 로깅 메서드가 호출되면 로거는 자체 수준과 메서드 호출과 연결된 수준을 비교합니다. 로거 수준이 메서드 호출보다 높으면 실제로 로깅 메시지가 생성되지 않습니다. 이것은 로깅 출력의 자세한 을 제어하는 기본 메커니즘입니다. 로깅 이벤트 정보와 함께 출력할 컨텍스트 정보를 전달할 수 있는 쉬운 방법은 LoggerAdapter 클래스를 사용하는 것입니다. 이 클래스는 로거처럼 보이도록 설계되어 디버그(), info(), info(), 경고(), error(), 예외(), critical() 및 log()를 호출할 수 있습니다.

이러한 메서드는 Logger의 시그니처와 동일한 서명을 가지므로 두 가지 유형의 인스턴스를 서로 바꿔 사용할 수 있습니다. 로거와 마찬가지로 처리기의 심각도 수준을 설정할 수도 있습니다. 이 기능은 동일한 로거에 대해 여러 처리기를 설정하지만 각 핸들러에 대해 서로 다른 심각도 수준을 원하는 경우에 유용합니다. 예를 들어 레벨 경고 이상의 로그를 콘솔에 로그할 수 있지만 레벨 오류 이상의 모든 항목도 파일에 저장해야 합니다. 여기에 그렇게하는 프로그램입니다 : 당신은 모듈 수준에서 로거를 얻을 (이 기사를 포함하여, 나는 단지 짧은 예제를 제공하기 위해 그것을했다) 거기 밖으로 예제를 많이 볼 수 있습니다. 그들은 무해한 보이지만 실제로는 함정이 있습니다 – 파이썬 로깅 모듈은 파일에서 구성을로드하기 전에 생성 된 모든 로거를 존중합니다.이 같은 모듈 수준에서 로거를 얻는 경우 미세 한 구성이 바람직하다면 로깅 모듈도 있습니다. 을 사용하면 구성 파일에서 로깅 구성을 로드할 수 있습니다. 이것은 매우 강력하지만 거의 필요하지 않습니다.

파일에서 로깅 구성을 로드할 때 disable_existing_loggers=False를 지정합니다. 이전 버전과의 호환성에 대해서만 기본값은 모듈에서 만든 로거를 비활성화합니다. 이렇게 하면 많은 모듈이 중단되므로 주의해서 사용하십시오. 마지막 옵션은 파일에 직접 메시지를 기록하는 것입니다. 관리자가 특정 파일에 특정 메시지를 작성하도록 syslog를 구성하거나 컨테이너 내부에 배포하는 경우 이 방법은 안티 패턴이기 때문에 요즘은 거의 유용하지 않습니다. 또한 중앙 집중식 로깅을 사용하는 경우 추가 로그 파일을 처리해야 하는 것이 추가 관심사입니다. 그러나 여전히 사용할 수있는 옵션입니다. 로깅 함수는 추적하는 데 사용되는 이벤트의 수준 또는 심각도이름을 따서 명명됩니다. 표준 수준 및 적용 가능성은 아래에 설명되어 있습니다(심각도의 증가 순서): LoggerAdapter의 인스턴스를 만들 때 로거 인스턴스와 컨텍스트 정보가 포함된 dict와 같은 개체를 전달합니다. LoggerAdapter 인스턴스에서 로깅 메서드 중 하나를 호출하면 해당 생성자로 전달된 Logger의 기본 인스턴스에 대한 호출을 위임하고 위임된 호출의 컨텍스트 정보를 전달하도록 정렬합니다.