【问题标题】:Configure Logback under Spring using Java and Not XML在 Spring 下使用 Java 而不是 XML 配置 Logback
【发布时间】:2019-07-12 22:41:58
【问题描述】:

在 Spring[Boot] 下,如何使用 JavaConfig 或某种基于 Annotation 的配置以编程方式配置 Logback。 我希望尽可能避免使用 XML 文件

欢迎举例

我不是在寻找指向以下内容的链接。我已经有了这些。假设我有这些,我的问题是如何达到这个问题的目标。 How to configure Lockback in Java when NOT under Spring How to set up Logback under Spring or Spring Boot using XML

【问题讨论】:

    标签: java spring logback spring-logback


    【解决方案1】:

    是的。如果您想以编程方式配置,这是可能的。例如,下面的代码对我有用:

    import ch.qos.logback.classic.Level;
    import ch.qos.logback.classic.Logger;
    import ch.qos.logback.classic.LoggerContext;
    import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
    import ch.qos.logback.classic.spi.ILoggingEvent;
    import ch.qos.logback.core.FileAppender;
    import org.slf4j.LoggerFactory;
    
    public class LoggerUtil {
      public static void main(String[] args) {
        Logger example1 = createLoggerFor("example1", "example1.log");
        Logger example2 = createLoggerFor("example2", "example2.log");
        example1.info("test-example1");
        example2.info("test-example2");
      }
    
      private static Logger createLoggerFor(String string, String file) {
        LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
        PatternLayoutEncoder patternLayoutEncoder = new PatternLayoutEncoder();
    
        patternLayoutEncoder.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n");
        patternLayoutEncoder.setContext(loggerContext);
        patternLayoutEncoder.start();
        FileAppender<ILoggingEvent> fileAppender = new FileAppender<ILoggingEvent>();
        fileAppender.setFile(file);
        fileAppender.setEncoder(patternLayoutEncoder);
        fileAppender.setContext(loggerContext);
        fileAppender.start();
    
        Logger logger = (Logger) LoggerFactory.getLogger(string);
        logger.addAppender(fileAppender);
        logger.setLevel(Level.DEBUG);
        logger.setAdditive(false); /* set to true if root should log too */
    
        return logger;
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 2015-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多