2014-01-27 179 views
1

我在我的類路徑中有log4j2 jar文件。以下是我的Log4j2.xml。我想將日誌寫入本地文件「G:/test/apps.log」,但我遇到兩個問題:Web應用程序中的Log4j2配置

  1. 當我運行Web應用程序時,輸出僅打印到控制檯而不是文件。
  2. 我見過幾個答案,建議將Log4j2.xml放入WEB-INF/classes。但是,當我做一個乾淨的構建,該文件將被刪除,所以我應該在哪裏放置配置文件?

    注:我使用Tomcat:7.0.34,Servlet 3.我已經刪除了Cantalina屬性中Log4J的引用。

    <?xml version="1.0" encoding="UTF-8"?> 
    <configuration status="warn"> 
        <appenders> 
    
        <Console name="Console" target="SYSTEM_OUT"> 
         <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/> 
        </Console> 
    
        <File name="MyFile" fileName="G:/test/apps.log"> 
         <PatternLayout pattern="%d{yyyy-mm-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
        </File> 
    
        </appenders> 
    
        <loggers> 
    
        <root level="trace"> 
         <appender-ref ref="MyFile" level="trace" additivity="true"/> 
        </root> 
    
        </loggers> 
    </configuration> 
    

回答

3

同時需要log4j的-API 2.0和在類路徑中log4j的核心 - 2.0 jar文件。 如果未找到核心jar,則api jar會回退到SimpleLogger(控制檯)實現。

通過將配置更改爲<configuration status="trace">,您可以看到log4j2內部日誌記錄,這可能有助於解決配置問題。 (這也需要log4j的核心 - 2.0罐子雖然)。

的log4j2.xml文件可以在類路徑,也可以指定與系統屬性-Dlog4j.configurationFile=/path/to/log4j2.xml的位置,

+0

有隻指定方式一個文件夾,比如'-Dconfig.location =/path/to/folder',然後用log4j2查看這個文件夾來搜索'log4j2.xml'文件?在我的應用程序中,我已經有一個文件夾,我在其中放置了配置文件,還有'log4j2.xml',我不想使用單獨的選項標誌來啓動我的應用程序。 – lanoxx

+1

「log4j.configurationFile」系統屬性的替代方法是將'log4j2.xml'文件放入類路徑中。您可以在該類路徑中包含該文件夾(包含您的配置文件)。 –

+0

我知道這件事。我正在尋找一種以編程方式來完成這一任務的方式。 – lanoxx