1

我有一个使用 glassfish 3.1 服务器进行测试的简单 Netbeans 7.1.2 (NON MAVEN) 项目。

我创建了一个 log4j2.xml 文件并将其放置在类路径中

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Threshold" value="debug"/>
        <param name="Target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ABSOLUTE} [%t] %-5p %c{1} - %m%n"/>
        </layout>
    </appender>
    <appender name="rolling-file" class="org.apache.log4j.RollingFileAppender">
        <param name="file" value="c:\tmp\Program-Name.log"/>
        <param name="MaxFileSize" value="500KB"/>
        <param name="MaxBackupIndex" value="4"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/>
        </layout>
    </appender>

    <logger name="org.hibernate">
        <level value="info" />
    </logger>

    <root>
        <priority value ="debug" />
        <appender-ref ref="console" />
        <appender-ref ref="rolling-file" />
    </root>
</log4j:configuration>

该项目使用休眠将数据从 Web 服务存储到数据库。

但是我无法记录任何内容。我可以在 Netbeans IDE 中看到休眠日志,但看不到文件系统文件上创建的日志。

调用 Web 服务时出现此错误

SEVERE: ERROR StatusLogger Unknown object "logger" of type org.apache.logging.log4j.core.config.LoggerConfig is ignored
SEVERE: ERROR StatusLogger root contains an invalid element or attribute "priority"
SEVERE: ERROR StatusLogger Unknown object "root" of type org.apache.logging.log4j.core.config.LoggerConfig is ignored

有人可以帮忙或给我一些建议我用谷歌搜索和stackoverflow但没有机会。

保罗

4

1 回答 1

3

我认为您的log4j2.xml文件与旧的 log4j 样式 xml 混合在一起。
在将休眠日志附加到我的应用程序的日志文件时,我遇到了和你一样的麻烦。但我认为我可以帮助解决记录器错误。

试试这个文件(并注意我所做的更改):

<?xml version="1.0" encoding="UTF-8" ?>
<configuration name="SOME_PROJ_NAME" status="OFF">
    <appenders>
        <RollingFile name="rolling-file" fileName="c:/tmp/Program-Name.log" filePattern="c:/tmp/$${date:yyyy-MM}/Program-Name-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <pattern>%d{ABSOLUTE} [%t] %-5p %c{1} - %m%n</pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="6" modulate="true"/>
                <SizeBasedTriggeringPolicy size="250 MB"/>
            </Policies>
        </RollingFile>
    </appenders>
    <loggers>
        <root level="info"
            <appender-ref ref="rolling-file"/>
        </root>
        <logger name="org.hibernate level="info">
            <appender-ref ref="rolling-file"/>
        </logger>
    </loggers>
</configuration>

它与我正在使用的非常相似。请注意,该文件应该位于类路径上,以便启动 log4j2 自动配置。
使用网络配置 log4j2 时应该做的最重要的事情是查看log4j2不是 log4j样式配置。
我建议您查看http://logging.apache.org/log4j/2.x/以获取更多信息。他们有一个很好的可下载 pdf,您可以查看。
另外,请查看关于类似问题的问题。

于 2013-02-22T11:59:05.803 回答