2013-11-25 3 views
1

log4php의 LoggerAppenderMongoDB는 레이아웃을 필요로하지 않으며 config.xml 파일에 레이아웃을 지정하더라도 적어도 기본적으로 레이아웃을 사용하지 않는 것으로 보입니다.LoggerAppenderMongoDB가 레이아웃을 사용하도록 강제하는 방법은 무엇입니까?

복용량 누구든지 log4php LoggerAppenderMongoDB가 config.xml에서 지정된 레이아웃을 사용하도록하는 방법을 알고 있습니까?

<appender name="myConsoleAppender" class="LoggerAppenderConsole" /> 

<appender name="myFileAppender" class="LoggerAppenderFile"> 
    <layout class="LoggerLayoutPattern"> 
     <param name="conversionPattern" value="%date %server{REMOTE_ADDR}:%server{REMOTE_PORT} [%logger] %message%newline" /> 
    </layout> 
    <param name="file" value="myLog.log" /> 
</appender> 

<appender name="myMongoDBAppender" class="LoggerAppenderMongoDB"> 

    <layout class="LoggerLayoutPattern"> 
     <param name="conversionPattern" value="%date %server{REMOTE_ADDR}:%server{REMOTE_PORT} [%logger] %message%newline" /> 
    </layout> 

    <param name="host" value="mongodb://xxxxx" /> 
    <param name="port" value="xxxx" /> 
    <param name="databaseName" value="xxxxx" /> 
    <param name="collectionName" value="xxxx" /> 
</appender> 

<logger name="myLogger"> 
    <appender_ref ref="myMongoDBAppender" /> 
</logger> 

<root> 
    <appender_ref ref="myFileAppender" /> 
</root> 
지금 로그가 지정된 레이아웃을 사용하는 파일에 가고 있지만, MongoDB를가는 사람은되지 않습니다 : 같은

내 config.xml에 보인다.

답변

0

MongoDB appender는 기록 된 이벤트가 구조화 된 방식으로 Mongo에 기록되기 때문에 레이아웃을 사용하지 않습니다. 모든 정보를 한 줄로 병합 할 필요없이 별개의 정보를 가져올 수 있습니다.

appender가 'timestamp', 'level', 'thread', 'message', 'loggerName', 'loggerName'등의 정보 만 appender로 채우므로 모든 가능한 정보를 보유하고있는 것은 아닙니다. fileName ','method ','lineNumber ','className ','exception '과 같은 항목이 있습니다.

MDC 또는 NDC (매핑 된 진단 컨텍스트, 중첩 된 진단 컨텍스트)에 입력 된 정보가 누락 된 것처럼 보입니다.이 정보는 사용하고 필요하면 매우 유용한 기능입니다. 누락 된 것은 레이아웃에 추가하려고했던 것입니다 : $ _SERVER의 원격 IP 주소와 포트. 이 정보를 추가 할 기능 요청을하는 것이 좋습니다.

그동안 기존 appender를 자신의 필요에 맞게 확장 할 수 있습니다.

관련 문제