배포자가 Tomcat webapp log4j2 RollingFileLogger의 경로를 지정하도록 허용해야합니다. 나는 JNDI를 사용하고 싶지만 평범한 -D 매개 변수를 사용할 수있다. This apache page 꽤 잘 설명하는 것 같습니다.log4j2의 매개 변수 대체
문제가 해결되지 않습니다. 나는 JNDI에서 특별히 경험하지 않는다는 것을 인정할 것이다. 그러나 나는 간단한 JVM 매개 변수를 사용할 수조차 없다. 읽기에 대해 Property Substitution 나는 $$ {jndi : xxxx}를 파일 이름 속성에 넣을 수는 없으며 $ {xxx} 속성 대체를 사용해야한다는 인상을 받았습니다. 불행히도 그 속성을 대체 잘 조회 jndi 또는 env도 해결하는 동안 작동합니다.
log4j2.xml :
<Properties>
<Property name="filename">$${jndi:logPath/directory}/ief.log</Property>
</Properties>
....
<RollingFile name="RollingFileLogger" fileName="${filename}" immediateFlush="false" append="true"
결과 :
2014-09-16 14:44:46,284 ERROR Unable to create file ${jndi:logPath/directory}/ief.log java.io.IOException: The filename, directory name, or volume label syntax is incorrect
는 속성이 대체되어 있지만 조회가 완료되지 볼 수 있듯이
. context.xml 항목의 모양이 확실하지 않습니다. 하지만 내 추측이다 : 나는 log4j에 버전 2.0을 사용하지만 꽤 확신하고<Resource name="logPath"
auth="Container"
directory="/tmp" />
이 내 오해하지 버그입니다. 내가 잘못하고있는 것을 해결하는 데 도움이된다면 크게 감사 할 것입니다.