我想让DropWizard登录到输出文件.正在创建文件但没有写入任何文件.
事实上,似乎没有使用提供的.yml文件中的配置.
我在启动期间也收到以下警告,不确定它们是否相关:
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/Users/conor/.m2/repository/ch/qos/logback/logback-classic/1.1.3/logback-classic-1.1.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/Users/conor/.m2/repository/com/conor/project/project-common/0.1-SNAPSHOT/project-common-0.1-SNAPSHOT.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
如何让dropwizard在启动时提供的yml中获取日志配置,如何确定当前配置的来源?谢谢.
更新::
我正在运行DropWizard v0.9.1
,我的日志配置如下:
# Logging settings. logging: # The default level of all loggers. Can be OFF, ERROR, WARN, INFO, DEBUG, TRACE, or ALL. level: TRACE # Logger-specific levels. loggers: # Sets the level for 'com.example.app' to DEBUG. io.dropwizard: INFO # Redirects SQL logs to a separate file org.hibernate.SQL: level: DEBUG # Logback's Time Based Rolling Policy - archivedLogFilenamePattern: /tmp/application-%d{yyyy-MM-dd}.log.gz # Logback's Size and Time Based Rolling Policy - archivedLogFilenamePattern: /tmp/application-%d{yyyy-MM-dd}-%i.log.gz # Logback's Fixed Window Rolling Policy - archivedLogFilenamePattern: /tmp/application-%i.log.gz appenders: - type: console - type: file threshold: DEBUG logFormat: "%-6level [%d{HH:mm:ss.SSS}] [%t] %logger{5} - %X{code} %msg %n" currentLogFilename: output/logs/dropwizard.txt archivedLogFilenamePattern: output/logs/dropwizard-%d{yyyy-MM-dd}-%i.txt.gz archivedFileCount: 10 timeZone: UTC maxFileSize: 10MB
herrtim.. 5
这看起来像一个典型的SLF4J
绑定问题,很容易解决.首先看一下提供警告的URL中的相关部分,以获得解释:
SLF4J发出的警告只是一个警告.即使存在多个绑定,SLF4J也会选择一个日志框架/实现并与之绑定.SLF4J选择绑定的方式由JVM确定,并且出于所有实际目的应该被认为是随机的.从版本1.6.6开始,SLF4J将命名它实际绑定的框架/实现类.嵌入式组件(如库或框架)不应声明对任何SLF4J绑定的依赖性,而仅依赖于slf4j-api.当库声明对SLF4J绑定的编译时依赖性时,它会对最终用户强制绑定,从而否定SLF4J的用途.当您遇到一个嵌入式组件声明对任何SLF4J绑定的编译时依赖关系时,请花时间联系所述组件/库的作者,并请他们修改他们的方法.
由于绑定选择是随机的,我的猜测是project-common
SLF4J
依赖关系是绑定的而不是预期的logback-classic
依赖关系dropwizard
.您应该排除一个在project-common
你的Maven pom
文件或更好,但如果你有机会获得代码project-common
,从删除pom
文件链接到的网页的提示(即"改的").
这看起来像一个典型的SLF4J
绑定问题,很容易解决.首先看一下提供警告的URL中的相关部分,以获得解释:
SLF4J发出的警告只是一个警告.即使存在多个绑定,SLF4J也会选择一个日志框架/实现并与之绑定.SLF4J选择绑定的方式由JVM确定,并且出于所有实际目的应该被认为是随机的.从版本1.6.6开始,SLF4J将命名它实际绑定的框架/实现类.嵌入式组件(如库或框架)不应声明对任何SLF4J绑定的依赖性,而仅依赖于slf4j-api.当库声明对SLF4J绑定的编译时依赖性时,它会对最终用户强制绑定,从而否定SLF4J的用途.当您遇到一个嵌入式组件声明对任何SLF4J绑定的编译时依赖关系时,请花时间联系所述组件/库的作者,并请他们修改他们的方法.
由于绑定选择是随机的,我的猜测是project-common
SLF4J
依赖关系是绑定的而不是预期的logback-classic
依赖关系dropwizard
.您应该排除一个在project-common
你的Maven pom
文件或更好,但如果你有机会获得代码project-common
,从删除pom
文件链接到的网页的提示(即"改的").