Log4j FileAppender 无法在 jboss7 上工作
Log4j FileAppender not working on jboss7
我正在尝试使用 log4j 将信息记录到文件中。我的 log4j,位于 src/main/resources/SIXSFD,看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
<appender name="SYNC-PERFORMANCE" class="org.apache.log4j.FileAppender">
<param name="File" value="/Users/dcalderon/Desktop/log/sixsfd-bof" />
<layout class="org.apache.log4j.SimpleLayout">
</layout>
</appender>
<logger name="com.somepackage.PerformanceLoggerInterceptor" additivity="false">
<appender-ref ref="SYNC-PERFORMANCE" />
</logger>
</log4j:configuration>
如您所见,我正在尝试将 com.somepackage.PerformanceLoggerInterceptor class 中的所有信息记录到 /Users/dcalderon/Desktop/log/sixsfd-bof 中。这是 class 的样子:
package com.somepackage.interceptor;
import org.apache.log4j.Logger;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
import java.io.Serializable;
public class PerformanceLoggerInterceptor implements Serializable {
private static final Logger logger = Logger.getLogger(PerformanceLoggerInterceptor.class);
private static final String SIMPLE_FORMAT = "{}|{}|{}|{}";
@AroundInvoke
public Object logPerformance(InvocationContext invocationContext) throws Exception {
long startTime = System.currentTimeMillis();
Object returnValue = invocationContext.proceed();
long endTime = System.currentTimeMillis();
logger.error(SIMPLE_FORMAT);
return returnValue;
}
}
但由于某种原因,正在创建文件,但行 SIMPLE_FORMAT 未写入文件。然而,它正在登录 jboss server.log
我的配置有问题吗?
注意:
出于某种原因,我在部署 (jboss7) 时在 jboss 上得到了这个:
log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
我不知道那有多重要。
对于 JBoss AS 7,您需要 exclude log4j 并包含您自己的版本。您还需要确保它最终位于您的 WAR/WEB-INF/classes
目录中,因此它最终位于 class 路径中。
我正在尝试使用 log4j 将信息记录到文件中。我的 log4j,位于 src/main/resources/SIXSFD,看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
<appender name="SYNC-PERFORMANCE" class="org.apache.log4j.FileAppender">
<param name="File" value="/Users/dcalderon/Desktop/log/sixsfd-bof" />
<layout class="org.apache.log4j.SimpleLayout">
</layout>
</appender>
<logger name="com.somepackage.PerformanceLoggerInterceptor" additivity="false">
<appender-ref ref="SYNC-PERFORMANCE" />
</logger>
</log4j:configuration>
如您所见,我正在尝试将 com.somepackage.PerformanceLoggerInterceptor class 中的所有信息记录到 /Users/dcalderon/Desktop/log/sixsfd-bof 中。这是 class 的样子:
package com.somepackage.interceptor;
import org.apache.log4j.Logger;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
import java.io.Serializable;
public class PerformanceLoggerInterceptor implements Serializable {
private static final Logger logger = Logger.getLogger(PerformanceLoggerInterceptor.class);
private static final String SIMPLE_FORMAT = "{}|{}|{}|{}";
@AroundInvoke
public Object logPerformance(InvocationContext invocationContext) throws Exception {
long startTime = System.currentTimeMillis();
Object returnValue = invocationContext.proceed();
long endTime = System.currentTimeMillis();
logger.error(SIMPLE_FORMAT);
return returnValue;
}
}
但由于某种原因,正在创建文件,但行 SIMPLE_FORMAT 未写入文件。然而,它正在登录 jboss server.log
我的配置有问题吗?
注意: 出于某种原因,我在部署 (jboss7) 时在 jboss 上得到了这个:
log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
我不知道那有多重要。
对于 JBoss AS 7,您需要 exclude log4j 并包含您自己的版本。您还需要确保它最终位于您的 WAR/WEB-INF/classes
目录中,因此它最终位于 class 路径中。