簡體   English   中英

Log4j2自動配置

[英]Log4j2 auto config

我在正確應用log4j2.xml自動配置時遇到問題,我認為它與我的文件夾排列有關。
我正在使用maven添加log4j2庫並按如下方式安排我的項目:
- 包含所有“常用”類的項目,由我的系統的服務器和客戶端使用。
- 另一個“核心”項目 - 服務器端應用程序。
兩個項目都使用相同的通用包層次結構(如com.foo.specific.package

在Common項目中,我定義了一個logger包裝器:

public class LogWrapper
{
    static Logger systemParentLogger = LogManager.getLogger("com.foo");

    public static Logger getLogger(Class<?> cls)
    {
        return LogManager.getLogger(cls.getName());
    }
}

此外,Common項目包含META-INF下的log4j2.xml文件(以及用於Hibernate用法的persistence.xml文件)。

<?xml version="1.0" encoding="UTF-8"?>
<configuration name="PRODUCTION" status="OFF">

    <appenders>
        <appender type="RollingFile" 
            name="MyFileAppender" 
            fileName="logs/app.log" 
            filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
            <layout type="PatternLayout" pattern="%d %p %C{1.} [%t] %m%n"/>
        </appender>
    </appenders>

    <loggers>
        <root level="error">
            <appender-ref ref="MyFileAppender"/>
        </root>

        <logger name="com.foo" level="info" additivity="false">
            <appender-ref ref="MyFileAppender"/>
        </logger>

        <logger name="org.hibernate" level="error">
            <appender-ref ref=MyFileAppender"/>
        </logger>
    </loggers>

</configuration>

在Core項目中運行示例代碼(使用我編寫的LogWrapper和一些JPA voodoo)時,我仍然可以看到INFO hibernate日志,並且沒有創建日志文件。 我應該說,在調試代碼時,我可以看到獲取的記錄器被賦予了一些奇怪的值“ com.foo.core.persistence.PersistenceXMLTest:ERROR in sun.misc.Launcher$AppClassLoader@2f600492

log4j2.xml放在一個“文件夾”中,在eclipse術語中“不在類路徑上”。
META-INF更改為“源文件夾”解決了這個問題。
此外,未正確定義log4j2.xml文件。 這些是需要的修改:

<?xml version="1.0" encoding="UTF-8"?>
<configuration name="PRODUCTION" status="OFF">

<appenders>
    <RollingFile name="MyFileAppender" 
        fileName="../Logs/app.log" 
        filePattern="../Logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
        <PatternLayout>
            <pattern>%d %p %C{1.} [%t] %m%n</pattern>
        </PatternLayout>
        <Policies>
            <OnStartupTriggeringPolicy />
            <TimeBasedTriggeringPolicy interval="6" modulate="true"/>
            <SizeBasedTriggeringPolicy size="250 MB"/>
        </Policies>
    </RollingFile>
</appenders>

<loggers>
    <root level="error">
        <appender-ref ref="MyFileAppender"/>
    </root>

    <logger name="com.foo" level="info" additivity="false">
        <appender-ref ref="MyFileAppender"/>
    </logger>
</loggers>

</configuration>

仍然無法將org.hibernate記錄器重定向到我的日志,但至少我讓記錄器工作了

暫無
暫無

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

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