2014-09-04 39 views
0

我需要使用tomcat上下文變量設置一些log4j配置字段作爲源。任何想法?使用tomcat上下文變量配置log4j2

+0

請閱讀[我可以回答我自己的問題嗎?](http://stackoverflow.com/help/self-answer)。你需要編輯你的問題,使其成爲一個問題,然後提供一個單獨的答案。 – DavidPostill 2014-09-04 09:54:03

回答

1

我使用JNDI查找(http://logging.apache.org/log4j/2.x/manual/lookups.html#JNDILookup)結合屬性substituion(http://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution) 這裏Tomcat的上下文的提取物:

<Environment name="MongoDB.serverAddress.1.host" value="..." type="java.lang.String"/> 
<Environment name="MongoDB.serverAddress.1.port" value="..." type="java.lang.String"/> 
<Environment name="MongoDB.password" value="..." type="java.lang.String"/> 

這裏log4j2配置的提取物:

<Configuration status="warn"> 
    <Properties> 
    <Property name="MongoDbServer">$${jndi:MongoDB.serverAddress.1.host}:$${jndi:MongoDB.serverAddress.1.port}</Property> 
    <Property name="MongoDbPassword">$${jndi:MongoDB.password}</Property> 
</Properties> 
    <Appenders> 
     <NoSql name="databaseAppender"> 
      <MongoDb databaseName="SISTEMA" collectionName="applicationLog" 
       server="${MongoDbServer}" username="SISTEMA" 
       password="${MongoDbPassword}" /> 
     </NoSql> 
    ....