我正在使用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