로그 메시지를 포맷 처리 할 수 없습니다 :사용자 정의 포맷터 내가 루트 로거에 추가 한 내 파이썬 플라스크 응용 프로그램에서 사용자 정의 포맷터가
logger = logging.getLogger()
logger.setLevel(logging.INFO)
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
formatter = CustomLoggingFormatter()
handler.setFormatter(formatter)
logger.addHandler(handler)
내가 원하는 때 완벽하게 잘 작동 뭔가 로그 (logger.info() ...),하지만 라이브러리의 로그 문제가 있습니다. uwsgi.
{ "@timestamp": "2017-09-25T06 : 57 : 45.373Z"여기
는 로그인 메시지의 예이며, "레벨" "정보", "메시지" : "* %의에서 실행 : //은 %의 % D/%의"나는 LogRecord의 어떤 내 CustomLoggingFormatter의 receivs를 로그인 할 때} 내가 뭔가 내 포맷터 잘못했다, 그러나 아마 생각
, 그것은 보인다 위의 행에 대해 이렇게 :
LogRecord : werkzeug, 20, <>/lib/python3.5/site-packages/werkzeug/_internal.py, 87, "* % s에서 실행 중 : // % s : % d/% s"
여기 내 CustomLoggingFormatter입니다 : 작업에 내 포맷터를 들어
class CustomLoggingFormatter(Formatter):
data = {}
def __init__(self):
super(CustomLoggingFormatter, self).__init__()
def format(self, record):
print(record)
input_data = {}
input_data['@timestamp'] = datetime.utcnow().isoformat()[:-3] + 'Z'
input_data['level'] = record.levelname
if record.msg:
input_data['message'] = record.msg
input_data.update(self.data)
return json.dumps(input_data)
, 문자열 서식 먼저 해결하지만 발생하지 않습니다 여러 라이브러리해야 보인다. 이 문제를 해결하는 방법을 알고있는 사람은 누구입니까?
사용자 정의 코드를 표시하십시오. 'Formatter.format()'는 항상'LogRecord' 인스턴스를 처리해야합니다; 기본 구현체는'Formatter.formatMessage()'를 호출하여 실제 형식을 처리합니다 (일반적으로'vars (record)'를 사전으로 사용합니다). –
내 CustomLoggingFormatter를 추가했습니다. – user16655
포맷터 구현이 Python 버전간에 조금 바뀌었기 때문에 어떤 Python 버전을 실행하고 있습니까? –