2016-05-28 52 views
0

我正在使用jax-rs構建Web服務,並且希望在調用URL時記錄一些內容。我發現log4j 2並決定使用它。 我不知道爲什麼,但是當我做了一些測試,它的工作原理log4j2在測試時寫入文件,而不是在部署時寫入

Response response = target("user/v1/"+alfred.getPseudo()).request().get(); 
assertTrue(response.getStatus() < 300); 

這將使在日誌日誌字符串/ logs.log(我愛日誌)。然而,當我部署時(使用glassfish 4.1.1),當我調用相同的URL時,它不會在文件中寫入單個字符。

這裏是我的log4j2.xml(放在src /主/資源):

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="INFO"> 
    <Appenders> 
     <File name="File" fileName="logs/logs.log"> 
      <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS}[%t] %c{1} - %msg%n"/> 
     </File> 
    </Appenders> 
    <Loggers> 
     <Root level="INFO"> 
      <AppenderRef ref="File"/> 
     </Root> 
    </Loggers> 
</Configuration> 

web.xml是空的:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 
</web-app> 

我有lo4j的API和log4j的核心,無論是2.5 ,在我的pom.xml中。

最後,這裏是代碼:

private final static Logger logger = LogManager.getLogger(MyClass.class); 

上,我只是叫logger.info(String)logger.error(String)

我在做什麼錯,我該怎麼做才能在部署時創建日誌?

謝謝。

編輯:也許這將有所幫助。我以前有

<File name="File" fileName="logs/logs.log" bufferedIO="false"> 

在我的測試,我做了一個警告:「嘿,你設置bufferedIO爲false,但默認的緩衝區大小爲8192個,跆拳道」。當我在實際部署過程中調用URL時,這個警告就顯示出來了。我想這意味着我的配置在部署時被檢測到。

回答

0

好了,所以我明白這個我的錯誤: https://stackoverflow.com/a/8486370/5670024

我試圖寫應用程序的目錄內的文件。 改變

<File name="File" fileName="logs/logs.log"> 
    <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS}[%t] %c{1} - %msg%n"/> 
</File> 

<File name="File" fileName="c:/logs.log"> 
    <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS}[%t] %c{1} - %msg%n"/> 
</File> 

和它的作品!

0

你需要告訴web.xml的位置,我想。

<context-param> <param-name>log4jConfiguration</param-name> <param-value>WEB-INF/classes/log4j2.xml</param-value> </context-param>

請檢查的log4j2.xml位置部署並相應地更改param-value

但是建議在WAR級別使用log4j2.xml。所以很容易找到和改變。

+0

感謝您的回答。不幸的是,把xml文件放在'WEB-INF/classes'中,並添加你在'web中給出的上下文參數。xml'沒有這樣做。它不再適用於測試(我猜這可能是正常的),並且不會在'logs.log'中添加任何行 – Ghalnas