相关疑难解决方法(0)

以编程方式配置Log4j记录器

我是log4j第一次尝试使用SLF4J(带绑定).

我想配置3个不同的名为Logger,它们可以由LoggerFactory返回,它将记录不同的级别并将消息推送到不同的appender:

  • 记录器1"FileLogger"记录DEBUG并附加到 DailyRollingFileAppender
  • 记录器2"TracingLogger"记录TRACE +并附加到a JmsAppender
  • 记录器3"ErrorLogger"记录ERROR +并附加到其他变量 JmsAppender

此外,我希望它们以编程方式配置(在Java中,而不是XML或log4j.properties文件).

我想,通常情况下,我会Logger在某些引导代码中将它们定义为某个init()方法,就像方法一样.但是,因为我想使用slf4j-log4j,我很困惑我可以在哪里定义记录器并使它们可用于类路径.

我不认为这违反了SLF4J的基本目的(作为一个外观),因为我使用SLF4J API的代码永远不会知道这些记录器存在.我的代码只是对SLF4J API进行正常调用,然后将它们转发到它在类路径上找到的log4j Loggers.

但是如何在类路径中配置那些log4j记录器...在Java中?!

java logging log4j slf4j

183
推荐指数
3
解决办法
19万
查看次数

使用ConfigurationFactory以编程方式配置log4j2

我正在尝试通过使用ConfigurationFactory引用来配置和设置Log4j2 .我正在使用的代码如下:

public class LoggingConfiguration {

    public static final String PATTERN_LAYOUT = "[%d] [%t] [%-5level] - %msg (%logger{1}:%L) %n%throwable";
    public static final String LOG_FILE_NAME = "app.log";
    public static final String LOG_FILE_NAME_PATTERN = LOG_FILE_NAME + "-yyyy.MM.dd";

    static {
        ConfigurationFactory.setConfigurationFactory(new Log4j2ConfigurationFactory());
    }

    /**
     * Just to make JVM visit this class to initialize the static parts.
     */
    public static void configure() {
    }

    @Plugin(category = "ConfigurationFactory", name = "Log4j2ConfigurationFactory")
    @Order(0)
    public static class Log4j2ConfigurationFactory extends ConfigurationFactory {

        @Override …
Run Code Online (Sandbox Code Playgroud)

java logging log4j2

8
推荐指数
1
解决办法
9526
查看次数

标签 统计

java ×2

logging ×2

log4j ×1

log4j2 ×1

slf4j ×1