簡體   English   中英

3.0 servlet中的Log4J2配置

[英]Log4J2 configuration in 3.0 servlet

我嘗試根據文檔(以及相關的SO問題)設置LOG4J,但它不會創建假定的文件,但WildFly中有這樣的日志:

No Log4j context configuration provided. This is very unusual

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">

<context-param>
      <param-name>log4jConfigLocation</param-name>
     <param-value>/WEB-INF/classes/log4j2.xml</param-value>
</context-param>

app.war / WEB-INF /類/ log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="30">
    <!-- http://logging.apache.org/log4j/2.x/manual/configuration.html -->
    <Properties>
        <Property name="filename">c:/oauth.log</Property>
    </Properties>

    <Filter type="ThresholdFilter" level="trace"/>

    <Appenders>
        <Appender type="File" name="File" fileName="${filename}">
            <Layout type="PatternLayout">
                <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
            </Layout>
        </Appender>
        <File name="MyFile" fileName="c:/oauth2.log" immediateFlush="true">
            <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </Appenders>

    <Loggers>
        <Logger name="cz.literak.demo" level="debug" additivity="true">
            <AppenderRef ref="File"/>
        </Logger>
        <Root level="error">
            <AppenderRef ref="MyFile"/>
        </Root>
    </Loggers>

</Configuration>

app.war / WEB-INF / lib中

commons-logging-1.1.3.jar
json-smart-1.1.1.jar
log4j-api-2.0-rc1.jar
log4j-core-2.0-rc1.jar
log4j-jcl-2.0-rc1.jar

你能告訴我有什么問題嗎? 我試圖在web.xml中注釋掉上下文參數並依賴自動配置,但沒有任何變化。

編輯

當我添加以下代碼時

<context-param>
    <param-name>log4jContextName</param-name>
    <param-value>oauthDemo</param-value>
</context-param>

它的失敗方式不同(我現在沒時間調查)

07:41:29,269 INFO  [io.undertow.servlet] (MSC service thread 1-12) Log4jServletContainerInitializer starting up Log4j in Servlet 3.0+ environment.
07:41:29,644 INFO  [stdout] (MSC service thread 1-12) 2014-02-20 07:41:29,643 ERROR FileManager (c:/oauth2.log) java.io.FileNotFoundException: c:\oauth2.log (Přístup byl odepřen)
07:41:29,646 INFO  [stdout] (MSC service thread 1-12) 2014-02-20 07:41:29,645 ERROR Unable to invoke method createAppender in class org.apache.logging.log4j.core.appender.FileAppender for element File 07:41:29,647 INFO    [stdout] (MSC service thread 1-12)    at org.apache.logging.log4j.core.config.BaseConfiguration.createPluginObject(BaseConfiguration.java:913)

作為參考,本頁介紹了如何配置Log4j2:

https://logging.apache.org/log4j/2.x/manual/webapp.html#ContextParams

在我的例子中,我沒有在web.xml中配置任何context-param。 我唯一要做的就是設置顯示名稱:

<display-name>My Admin API</display-name>

我也使用log4j2.yaml而不是xml文件,文件不在戰爭中。 另請注意,在此頁面https://logging.apache.org/log4j/2.x/manual/webapp.html中,他們說Tomcat <7.0.43版本存在問題。 因此,您必須使用較新版本的特定配置。

除非指定了位置, 否則 Log4J將在類路徑中查找log4j2.xml配置文件。 您是否嘗試過指定log4j2.xml文件的位置(即從web.xml刪除context-param內容),而只是依賴於將配置放在類路徑中? app.war/WEB-INF/classes/log4j2.xml對我來說app.war/WEB-INF/classes/log4j2.xml看)

請注意,該文件必須命名為log4j2.xml而不是log4j.xml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM