为什么log4j2记录器定义冗长?

时间:2019-08-05 12:04:36

标签: log4j log4j2

我通常从log4j升级到log4j2,然后又新升级到log4j。我发现很难为log4j2.properties文件中的每个类文件引入冗长的记录器。例如,如果我必须在log4j中创建一个新的记录器,那么与将同一记录器的整个属性块相比,就可以在log4j.properties文件中引入一行。

例如:-如果我必须在程序包A中添加class2的记录器,则只需按以下步骤添加它:-

log4j.logger.A.Class1= DEBUG,file
log4j.logger.A.Class2 = DEBUG,file.

我只需在log4j.properties文件中引入第三行,就可以轻松添加另一个记录器。 而如果我必须执行相同的操作,则必须添加以下记录器:-

loggers=file1,file2
logger.file1.name=A.Class1
logger.file1.level = debug
logger.file1.appenderRefs = file
logger.file1.appenderRef.file.ref = LOGFILE

logger.file2.name=A.Class2
logger.file2.level = debug
logger.file2.appenderRefs = file
logger.file2.appenderRef.file.ref = LOGFILE

因此,如果我有100个类,则log4j2.properties文件将很长。不像我必须在log4j中做同样的事情。请注意file1,file2等的前缀。 问题是,有没有一种方法可以像在log4j中一样编写记录器?或者,有没有更简单的方法可以达到相同的目的?

如果上述操作不可行,则我最好还是坚持使用log4j。因为在大型项目中为每个班级创建记录器对我来说是一个严重的麻烦。

谢谢。

1 个答案:

答案 0 :(得分:0)

看看Log4J2 XML配置文件格式,使用它只需添加一行即可为类配置日志记录。前提是您对将所有日志写到一个相同的目标位置感到满意,否则每个类可能需要多于一行。
示例:

<?xml version="1.0" encoding="UTF-8" ?>
<Configuration>
    <Appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %-5p %-30C - %m%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="se.ivankrizsan.java.MyClass" level="DEBUG"/>
        <Logger name="org.springframework" level="INFO"/>

        <Root level="INFO">
            <AppenderRef ref="CONSOLE" />
        </Root>
    </Loggers>
</Configuration>

还请注意,您可以像上面示例中的org.springframework软件包一样,为整个软件包指定日志级别,从而一次指定多个类。

参考:Log4J2 XML configuration documentation

相关问题