2011-08-24 4 views
5

파이썬 로깅 포매터에서 부분 문자열 포맷을 수행하는 방법을 찾고 있습니다. 포매터를 다음과 같이 정의하려고 할 때

: 나는이있는 형식 오류를 얻을 것이다
파이썬 로깅 포매터의 부분 문자열 포맷

formatter = logging.Formatter('[num-%d] %(levelname)s %(message)s' % (num,))

을 'levelname'를 찾을 수 없습니다 인터프리터로 합리적이다 "형식 매핑이 필요"하고 '메시지'.

물론 'levelname'과 'message'모두 로깅 프레임 워크가 처리 할 형식이 지정되지 않았 으면합니다. 내가 보는 것처럼

, 문제 해결의 두 가지 다른 방법이 있습니다 : 그러나

  1. format = '[num-' + str(num) + '] %(levelname)s %(message)s' % (num,)
  2. format = '[num-%(num)d] %(levelname)s %(message)s' % dict(num=num, levelname='%(levelname)s', message='%(message)s')

, 나는이 두 솔루션은 다소 추한 찾고, 내가 거기 생각 파이썬에서 또는 파이썬 기본 제공 로깅 프레임 워크에서 문자열의 일부만 포맷하는 더 좋은 방법이어야합니다.

어떤 아이디어?

+0

복제본 http://stackoverflow.com/questions/4928526/python-format-string – Stefano

답변

5

이 시도 :

formatter = logging.Formatter('[num-%d] %%(levelname)s %%(message)s' % (num,)) 

당신은 %(...)s 필드로 Formatter 방법 당신의 문자열을 제공해야합니다. %%%으로 해석되므로 사용할 수 있습니다.

+0

대단히 감사합니다. – amito