我正在使用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時,這個警告就顯示出來了。我想這意味着我的配置在部署時被檢測到。
感謝您的回答。不幸的是,把xml文件放在'WEB-INF/classes'中,並添加你在'web中給出的上下文參數。xml'沒有這樣做。它不再適用於測試(我猜這可能是正常的),並且不會在'logs.log'中添加任何行 – Ghalnas