Log4j2在WebLogic 12.2.1中不起作用

时间:2016-03-03 08:33:33

标签: logging log4j weblogic log4j2 weblogic12c

我正在尝试在WebLogic 12.2.1下运行的Web服务中添加log4j日志记录,但不知何故日志记录无效。

这是我的WAR文件的WEB-INF \ classes中的log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
    <Properties>
        <Property name="log-path">E:/MLM/MyDomain/servers/MyAppSrv01/logs</Property>
    </Properties>
    <Appender type="File" name="File" fileName="${log-path}/Services.log" filePattern="${log-path}/Services-%d{yyyy-MM-dd}.log">
        <Layout type="PatternLayout">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Layout>
    </Appender>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="File"/>
        </Root>
    </Loggers>
</Configuration>

以下是我的网络服务代码的一部分:

@Path("TestWS")
@Consumes("text/plain")
@Produces("text/plain")
public class TestWS {

    static private Logger logger = LogManager.getLogger();

    public TestWS() {}

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    @Path("webservicemethod1")
    public String webservicemethod1(@Context HttpServletRequest request) {
        logger.error("In webservicemethod1");
        ....
    }

}

在我的WAR文件的WEB-INF \ lib \中,我有:

log4j-core-2.5.jar
log4j-api-2.5.jar

我可以使用客户端程序成功调用Web服务。但我根本没有看到日志文件被创建。可能是什么问题?

提前致谢。

2 个答案:

答案 0 :(得分:4)

对于WebLogic 12.1.3及更高版本,我需要将以下内容添加到weblogic.xml文件中以使log4j正常工作。

<wls:container-descriptor>
        <wls:prefer-application-packages>
            <wls:package-name>org.slf4j</wls:package-name>
            <wls:package-name>log4j</wls:package-name>
        </wls:prefer-application-packages>
</wls:container-descriptor>

答案 1 :(得分:0)

我认为这是由部署应用程序之前的weblogic负载org.hibernate.validator.internal.util.Version引起的,该类将在设置属性替换之前太早初始化log4j2 LogManager。