【发布时间】:2016-05-28 23:33:51
【问题描述】:
我正在使用 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">
当我在测试时,我收到一条警告“嘿,您将 bufferedIO 设置为 false,但默认缓冲区大小是 8192,wtf”。当我在实际部署期间调用 url 时,会显示此警告。我想这意味着在部署时也检测到了我的配置。
【问题讨论】: