log4j2在测试时写入文件,而不是在部署时写入

时间:2016-05-28 23:33:51

标签: maven jax-rs log4j2

我正在使用jax-rs构建一个Web服务,并希望在调用url时记录一些内容。我找到了关于log4j 2并决定使用它。 我不知道为什么但是当我做一些测试时它会起作用

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

这会将日志字符串放在logs / logs.log中(我喜欢日志)。 然而,当我部署(使用glassfish 4.1.1)时,当我调用相同的URL时,它不会在文件中写一个字符。

这是我的log4j2.xml(位于src / main / resources中):

<?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>

我的pom.xml中有lo4j-api和log4j-core,都是2.5。

最后,这里是代码:

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

我只需拨打logger.info(String)logger.error(String)

我做错了什么,在部署时应该怎么做才能创建日志?

感谢。

编辑:也许这会有所帮助。我以前有过

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

当我进行测试时,我收到了警告&#34;嘿,你将bufferedIO设置为false,但默认缓冲区大小为8192,wtf&#34;。当我在实际部署期间调用URL时,会显示此警告。我想这意味着在部署时也会检测到我的配置。

2 个答案:

答案 0 :(得分: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。所以很容易找到并改变。

答案 1 :(得分: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>

它有效!