我是 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/