为什么我的 dropwizard 日志记录配置没有应用?



我的dropwizard日志仅将所有内容输出到控制台,其输出所有级别的日志记录。在开发输出到控制台期间,我想为自己的东西提供一些记录,但要滤除噪音。我已经陷入困境了一段时间,并且由于我升级到Dropwizard 1.0.5,我的日志输出太大且无法使用以至于无法忽略它。我正在尝试过滤日志记录,但是无论我做什么,我的配置都不会使用。运行Dropwizard应用程序时,我将所有记录输出均可到达控制台

我正在使用以下命令启动

java  
-Dcom.sun.management.jmxremote  
-Dcom.sun.management.jmxremote.port=${JMX_PORT}  
-Dcom.sun.management.jmxremote.rmi.port=${JMX_PORT}  
-Dcom.sun.management.jmxremote.local.only=false  
-Dcom.sun.management.jmxremote.authenticate=false  
-Dcom.sun.management.jmxremote.ssl=false  
-Djava.rmi.server.hostname=${HOST_IP}  
-server  
-classpath "/server/api.jar:/server/config"  
-Dtm-devops.defaults.file=/server/config/local.properties  
-Xmx512m  
-Xms128m  
-Xdebug  
-Xrunjdwp:transport=dt_socket,server=y,suspend=${WAIT_DEBUG:-n},address=7878 
com.tubemogul.api.Application  server config.yaml

config.yaml在类修补程序中,它是其中唯一的yaml文件。我可以确认对该文件的无效更改已识别并防止服务器运行。

我正在尝试应用以下记录配置。

logging:
  # The default level of all loggers. Can be OFF, ERROR, WARN, INFO, DEBUG, TRACE, or ALL.
  level: WARN
  # Logger-specific levels.
  loggers:

    # Sets the level
    io.dropwizard:
      level: WARN
      additive: false
      appenders:
        - type: file
          currentLogFilename: log/dw.log
          archivedLogFilenamePattern: log/dw.%d.log.gz
          archivedFileCount: 5
    org.eclipse: NONE
    org.hibernate:
      level: WARN
      additive: false
      appenders:
        - type: file
          currentLogFilename: log/hib.log
          archivedLogFilenamePattern: log/hib.%d.log.gz
          archivedFileCount: 5
    org.springframework:
      level: WARN
      additive: true
      appenders:
        - type: file
          currentLogFilename: log/spring.log
          archivedLogFilenamePattern: log/spring.%d.log.gz
          archivedFileCount: 5
  appenders:
    - type: console
      threshold: WARN

使用配置,我给出了日志文件的创建,但永远不会写入。

我在您的配置上注意到的第一件事是" org.eclipse"的级别不正确,因为"无"不是公认的级别,这似乎是在触发所有日志来自控制台中的" org.eclipse"记录器的消息。

org.eclipse: NONE

有趣的是,当我将此记录器的级别更改为"关闭"时,我会发现不支持记录器的格式。我已经尝试了没有运气的记录器名称上没有引号,因为错误似乎与无效的JSON格式有关。这很奇怪,因为DW文档将此格式显示为支持的格式。

org.eclipse: OFF
"org.eclipse": OFF
Exception in thread "main" java.lang.IllegalArgumentException: Unsupported format of logger 'org.eclipse'

当我更改此记录器以将级别属性作为记录器的子属性,然后DW接受该格式,并且我不再将日志消息输入此记录器的控制台。

org.eclipse:
  level: OFF

话虽如此,带有阈值的控制台appender警告阻止所有消息进入控制台,既有正确级别和不正确的级别。我不确定这是否有帮助,而是尝试将" org.eclipse"更改为另一种格式,也许这会有所帮助,因为我无法使用DW 1.0.5复制问题正确的级别。

P.S。我从Intellij而不是从命令中执行了所有测试。

最新更新