因此,基本上我想做的是记录具有不同日志级别的日志,例如INFO DEBUG WARN等 到不同的日志文件。
我已经为slf4j here找到了类似的东西,但是dropwizard使用logback作为日志框架。
有人可以告诉我如何在带向导的dropwizard中执行此操作吗?我应该对conifg.yml文件进行哪些更改?
level: INFO
loggers:
"io.dropwizard": INFO
"org.hibernate.SQL":
level: DEBUG
additive: false
appenders:
- type: file
currentLogFilename: /var/log/myapplication-sql.log
archivedLogFilenamePattern: /var/log/myapplication-sql-%d.log.gz
archivedFileCount: 5
答案 0 :(得分:0)
这是您需要做的:
ERROR
级消息的过滤器示例:package foo;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.filter.Filter;
import ch.qos.logback.core.spi.FilterReply;
import com.fasterxml.jackson.annotation.JsonTypeName;
import io.dropwizard.logging.filter.FilterFactory;
@JsonTypeName("errors-only")
public class ErrorsOnlyFilterFactory implements FilterFactory<ILoggingEvent> {
@Override
public Filter<ILoggingEvent> build() {
return new Filter<>() {
@Override
public FilterReply decide(ILoggingEvent event) {
return event.getLevel() == Level.ERROR ?
FilterReply.ACCEPT :
FilterReply.DENY;
}
};
}
}
<resources>/META-INF/services/io.dropwizard.logging.filter.FilterFactory
foo.ErrorsOnlyFilterFactory
@JsonTypeName
下将filterFactories/type
批注的值添加到附加程序配置中(注意:type
是一个数组,因此您可以为每个附加程序指定多个过滤器):logging:
appenders:
- type: file
currentLogFilename: errors.log
...
filterFactories:
- type: errors-only
对于要分别记录的每个记录级别,您应该:
META-INF/services/io.dropwizard.logging.filter.FilterFactory