【问题标题】:Log4j2 Using class/logger name as a pattern for RoutingAppenderLog4j2 使用类/记录器名称作为 RoutingAppender 的模式
【发布时间】:2014-11-25 13:18:27
【问题描述】:

我正在尝试在某个包中为每个类设置单独的日志记录文件。我找到的最接近的解决方案是使用 RoutingAppender 并为那些在调用 getLogger 方法时添加到 ThreadContext 的某些类使用特殊的 getLogger。但是,此解决方案不会创建任何新的日志文件。我一直在阅读 stackoverflow 条目和 log4j2 文档,但不明白我哪里出错了。这是我看过的一些条目/文档

谁能帮我理解为什么我没有任何 className 日志文件?

这是我的 log4j2.xml 中的相关例外:

    <Routing name="Routing">
        <Routes pattern="$${ctx:className}">
            <Route>
                <File name="testCaseLog"
                    fileName="${ctx:className}.log">
                    <PatternLayout
                        pattern="%d{HH:mm:ss} %-5p [%t] %c{1} - %m%n" />
                </File>
            </Route>
        </Routes>
    </Routing>
</Appenders>
<Loggers>
    (other loggers)
    <Root level="info">
        <AppenderRef ref="stdout" />
        <AppenderRef ref="Routing"/>
    </Root>
</Loggers>

这是我在 myUtils 类中的记录器函数的一点点

public static Logger getLogger(String className) {
    ThreadContext.put("className", className);

    //This is using the slf4j LoggerFactory. I'm starting to think this might be the problem, but I can't get away from slf4j
    Logger log = LoggerFactory.getLogger(className);

    return log;
}

这是来自需要它自己的日志文件的类之一的调用:

    private final static Logger log = myUtils.getLogger(OpenTest.class.getName());

【问题讨论】:

  • 您在 INFO 级别登录?使用此配置,附加程序将不会接收 TRACE 和 DEBUG 日志事件...此外,&lt;Root&gt; 元素是否嵌套在 &lt;Loggers&gt; 包含元素中?
  • 我可以更改日志级别,但我们的大部分使用都在信息级别。我可以在控制台中看到调用 myUtils.getLogger 的类中有 cmets,但没有合适的文件。根记录器位于 元素中。我们的配置还有其他我认为不相关的 Logger。

标签: java logging log4j2


【解决方案1】:

您可以尝试使用 key="$${ctx:className}" 向您已有的 Routes 元素添加另一个 Route 部分吗?

        <Route key="$${ctx:className}">
            <File name="testCaseLog"
                fileName="${ctx:className}.log">
                <PatternLayout
                    pattern="%d{HH:mm:ss} %-5p [%t] %c{1} - %m%n" />
            </File>
        </Route>

【讨论】:

    猜你喜欢
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多