java - Dropwizard 日志记录 : add new appender for a particular logger

标签 java logging logback dropwizard

我是 dropwizard 的新手,正在尝试找出更好地配置日志记录的方法。

我已经像这样在一个包中注册了一个新的记录器:

Logger log = LoggerFactory.getLogger("mylogger");
log.info("this is a log from mylogger");

现在我在一堆服务中使用这个包。默认情况下,来自此记录器的任何日志都将写入应用程序日志文件。

我要解决的问题是:我希望 mylogger(only) 写入的所有日志都转到一个新文件中。向服务 yml 文件添加一个新的附加程序是相当简单的,例如:

logging:

  loggers:

  appenders:
  - type: file.
    currentLogFilename: ./logs/example.log
    archivedLogFilenamePattern: ./logs/example-%d.log.gz
    archivedFileCount: 5

但这意味着所有应用程序日志现在都将写入 example.log。我不知道有什么方法可以专门为这个 appender 指定一个记录器,它不会影响/改变已经存在的日志记录。

有人能告诉我在 dropwizard 中是否有办法做到这一点?谢谢!

最佳答案

在 Dropwizard 0.9.0(2015 年 10 月 28 日发布)中,他们添加了对单个记录器附加程序的支持并禁用记录器可加性。

要实现您所描述的内容,您可以在 yaml 配置文件中指定以下内容 -

logging:
  level: INFO
  loggers:
    "mylogger":
      level: DEBUG
      additive: false
      appenders:
        - type: file
          currentLogFilename: /var/log/mylogger.log
          archivedLogFilenamePattern: /var/log/mylogger-%d.log.gz
          archivedFileCount: 5
  appenders:
    - type: console

将 additive 设置为 false 将阻止记录器(或它下面的任何东西)写入层次结构在它之上的附加程序,包括根记录器。

引用资料-

关于java - Dropwizard 日志记录 : add new appender for a particular logger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31060481/

相关文章:

java - 如何将 MDC 与线程池一起使用?

windows - Logback 和 Windows 事件系统集成

wordpress - wordpress 上的调试日志不起作用

c# - Azure 队列读/写限制

java - 将最大的产品计数器初始化为 "infinitely"小数

夏令时更改期间的 Java Calendar.roll 和 CST

JavaScript 记录器到滚动文件

logging - 如何同时使用 log4 和 logback?

java - logback 在运行时更改配置和日志文件创建问题

java - 在这种情况下创建了多少 Spring bean