当前位置: 首页 > 面试题库 >

以编程方式配置LogBack附加程序

马天逸
2023-03-14
问题内容

我在logback.xml中定义了一个logback附加程序,它是一个数据库附加程序,但是我很好奇是否有任何方法可以使用定义为bean的我自己的连接池在java中配置附加程序。

我发现类似的事情,但没有实际答案。


问题答案:

这是一个对我有用的简单示例(请注意,在此示例中我使用FileAppender)

import org.slf4j.LoggerFactory;

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;

public class Loggerutils {

    public static void main(String[] args) {
          Logger foo = createLoggerFor("foo", "foo.log");
          Logger bar = createLoggerFor("bar", "bar.log");
          foo.info("test");
          bar.info("bar");
    }

    private static Logger createLoggerFor(String string, String file) {
          LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
          PatternLayoutEncoder ple = new PatternLayoutEncoder();

          ple.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n");
          ple.setContext(lc);
          ple.start();
          FileAppender<ILoggingEvent> fileAppender = new FileAppender<ILoggingEvent>();
          fileAppender.setFile(file);
          fileAppender.setEncoder(ple);
          fileAppender.setContext(lc);
          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;
    }

}


 类似资料:
  • 我在logback.xml中定义了一个logback appender,它是一个DB appender,但是我想知道是否有任何方法可以使用我自己定义为bean的连接池在java中配置appender。 我发现了类似的事情,但从来没有真正的答案。

  • 问题内容: 我知道有一个reloadDefaultConfiguration()jmx操作,但是没有获取MBean实例并调用此操作,是否有一个Logback api重新加载默认配置(可以选择指定日志配置文件路径)? 问题答案: 这是以下代码的源代码: 只在需要的地方运行此代码呢? 唯一的问题是变量。您可以使用以下方法获取它: 不幸的是,似乎没有完善的API可以做到这一点,那么引发问题呢?您是否还知

  • 我试图在logback中动态添加一个appender。这是我的代码。 它工作正常,但仅适用于添加追加器的特定记录器。有没有办法让它适用于应用程序中的所有记录器?我正在寻找一种动态添加和删除追加器的方法。

  • 问题内容: 我正在尝试以编程方式设置Logback追加程序路径。(确切地说,带有FixedWindowRollingPolicy的RollingFileAppender) 之所以这样做,是因为我想让我的用户在首选项对话框(Eclipse RCP)中设置日志路径。 我已经尝试过类似的方法,但是我不会更改配置文件中定义的日志路径: 问题答案: 使用系统属性并重新加载配置文件看起来更干净: 更改logb

  • 问题内容: 我想以编程方式从应用程序中加载Log4j2 XML配置文件。 试过这个: 还有这个: 但是什么都没有。 问题答案: 自己找到答案。有人可能会觉得有用。

  • 我正在尝试使用我自己的应用程序实现或扩展的ResourceConfig或PackageResourceConfig来配置我的Jersey应用程序。因此,我的第一次尝试是将现有的web.xml(实际上,由于开发的库性质,我使用的是web-fragment.xml)配置移植到MyApplication实现。 当我使用第二个版本时,我会收到以下信息 正如您所看到的,是第一个注册的类,但由于它不是公共的,