【问题标题】:Logging - Log4j2 logging issue日志记录 - Log4j2 日志记录问题
【发布时间】:2018-01-18 14:33:25
【问题描述】:

我目前正在开发一个使用 Log4j2 进行日志记录的应用程序。

下面是Log4j2.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug" packages="myappsystem">
<Appenders>
    <MyDockerAppender name="STDOUT" />
</Appenders>
<Loggers>
    <logger name="org.springframework" level="ERROR"/>
    <logger name="myappsystem"  level="INFO"/>
    <Root level="ERROR" additivity="true" includeLocation="true">
        <AppenderRef ref="STDOUT"/>
    </Root>
</Loggers>

现在我在这里面临的挑战是记录器似乎只有在我执行以下操作时才会记录

private static final Logger LOGGER = LogManager.getLogger("myappsystem");
LOGGER.info("Entering method");

这里的问题是,它没有给我记录该特定行的类文件的详细信息。

所以,我尝试执行以下操作:

private static final Logger LOGGER = LogManager.getLogger(MyServiceImpl.class);

这似乎不起作用。 关于我哪里出错的任何想法?

【问题讨论】:

    标签: java spring-boot logging log4j2


    【解决方案1】:

    您的记录器已配置为

    <logger name="myappsystem"  level="INFO"/>
    

    因此

    LogManager.getLogger("myappsystem");

    有效。

    如果你使用

    LogManager.getLogger(MyServiceImpl.class);
    

    您必须像在&lt;logger name="org.springframework" level="ERROR"/&gt; 中使用的那样,以完全限定的类名(带有包)开始配置记录器

    也就是说

    <logger name="my.project.package.structure"  level="INFO"/>
    

    【讨论】:

    • 那行得通。谢谢!但是我在这里看到的问题是,我在几个包下有大量的类。提及每一个包是没有意义的。无论如何,您可以建议将此通用化?
    • 你可以使用更高级别的包名。所以 类似于“org.springframework”,它为该包结构中的所有类注销。
    • 尝试过这样的事情。 。像魅力一样工作!谢谢大家!
    猜你喜欢
    • 2021-11-19
    • 2021-08-28
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多