파이썬에는 두 가지 주요 문자열 포맷 옵션 %
과 str.format
이 있습니다. logging
모듈에 게으른 기능이 있습니다.왜 파이썬 로깅 모듈은 이전 문자열 포맷을 사용합니까?
logging.debug('The value is %s', huge_arg)
로그 라인이 인쇄되지 않으면 문자열을 구성하지 않습니다. 그러나이 기능은 스팅이 이전 스타일 %
형식을 사용하는 경우에만 작동합니다. 이 게으른 기능과 함께 str.format
을 사용할 수 있습니까? 아무도 새로운 포맷 기능을 지원하는 logging
코드를 변경하기 위해 자원 봉사 없다 - 지금까지 - 귀하의 질문에 대한 유일한 답이 있다는 것입니다
logging.debug('The value is {}', fmt_arg=(huge_arg))
일부 코드가 사용자 정의 클래스를 사용하지 않는 한 추가 키워드 인수가있는 경우 기존 코드가 손상되는 이유는 무엇입니까? '{}'이 느리면 게으른 로깅을 사용하는 것이 더 적절합니다. 링크를 가져 주셔서 감사합니다. – balki
@ balki 아마 그렇지는 않지만 사람들이 코드에 대해 어떤 가정을하는지 결코 알 수 없습니다. 어쨌든 분명히 코드 경로를 복잡하게하고 코드를 추가하는 것은 기능상의 이점이 거의 없습니다. (링크 된 게시물에 설명 된대로 로깅을 사용하여 {} 형식을 사용할 수 있습니다.) 그리고 게으른 서식이 처음부터 있었지만 사람들은 가능한 한 낮은 로깅 오버 헤드를 원한다고 지적했습니다. –