Apache CXF 和 Log4j2
Apache CXF and Log4j2
我 运行 独立 Java 应用程序中的嵌入式 JAX-RS Web 服务。我使用带有码头的 Apache CXF 3.3.0 作为 Web 容器。我还使用 Spring 配置 Jetty 和服务 bean。
我的应用程序使用 log4j2,我正在尝试记录 CXF 容器收到的 URL 以进行故障排除。
我在 WebService 接口中添加了以下注释:
@InInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingInInterceptor")
由于我使用 Jetty 而不是 servlet 容器,因此此处记录的说明不起作用:
Apache CXF - General CXF Logging
当我在 eclipse 中 运行 应用程序时,URL 将以红色打印到控制台。我使用红色来记录 stderr。
但是当使用 bash:
重定向这些描述符时,log4j 日志文件中没有输出,也没有发送到 stderr 或 stdout 的输出
1> ${LOG_DIR}/stdout.log \
2> ${LOG_DIR}/stderr.log &
我无法通过将 org.apache.cxf.interceptor.LoggingInInterceptor
与 log4j2 结合使用来记录 REQUEST_URL
。
我可以通过创建自己的 InInterceptor
class.
轻松解决这个问题
以下 class 将传入的 REQUEST_URL
很好地记录到我的 log4j2 附加程序中:
public class RefDataInInterceptor extends AbstractPhaseInterceptor<Message> {
private static final Logger log =
LogManager.getLogger(RefDataInInterceptor.class);
public RefDataInInterceptor() {
super(Phase.RECEIVE);
}
@Override
public void handleMessage(Message msg) throws Fault {
log.info(msg.getContextualProperty(Message.REQUEST_URL));
}
}
我要做的就是更换它:
@InInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingInInterceptor")
有:
@InInterceptors(interceptors = "com.aqua.refdata.RefDataInInterceptor")
这是输出到控制台和日志文件的 log4j2:
2019-07-12 16:13:54.811 [3710][qtp172794870-21][INFO http://localhost:9000/refdata/exec/getDBParam
eters [RefDataInInterceptor.java:19]
我 运行 独立 Java 应用程序中的嵌入式 JAX-RS Web 服务。我使用带有码头的 Apache CXF 3.3.0 作为 Web 容器。我还使用 Spring 配置 Jetty 和服务 bean。
我的应用程序使用 log4j2,我正在尝试记录 CXF 容器收到的 URL 以进行故障排除。
我在 WebService 接口中添加了以下注释:
@InInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingInInterceptor")
由于我使用 Jetty 而不是 servlet 容器,因此此处记录的说明不起作用: Apache CXF - General CXF Logging
当我在 eclipse 中 运行 应用程序时,URL 将以红色打印到控制台。我使用红色来记录 stderr。
但是当使用 bash:
重定向这些描述符时,log4j 日志文件中没有输出,也没有发送到 stderr 或 stdout 的输出1> ${LOG_DIR}/stdout.log \
2> ${LOG_DIR}/stderr.log &
我无法通过将 org.apache.cxf.interceptor.LoggingInInterceptor
与 log4j2 结合使用来记录 REQUEST_URL
。
我可以通过创建自己的 InInterceptor
class.
以下 class 将传入的 REQUEST_URL
很好地记录到我的 log4j2 附加程序中:
public class RefDataInInterceptor extends AbstractPhaseInterceptor<Message> {
private static final Logger log =
LogManager.getLogger(RefDataInInterceptor.class);
public RefDataInInterceptor() {
super(Phase.RECEIVE);
}
@Override
public void handleMessage(Message msg) throws Fault {
log.info(msg.getContextualProperty(Message.REQUEST_URL));
}
}
我要做的就是更换它:
@InInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingInInterceptor")
有:
@InInterceptors(interceptors = "com.aqua.refdata.RefDataInInterceptor")
这是输出到控制台和日志文件的 log4j2:
2019-07-12 16:13:54.811 [3710][qtp172794870-21][INFO http://localhost:9000/refdata/exec/getDBParam
eters [RefDataInInterceptor.java:19]