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

标签 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”的级别不正确,因为“NONE”不是可接受的级别,这似乎触发了来自“org.eclipse”记录器的所有日志消息显示在控制台中。

org.eclipse: NONE

有趣的是,当我将此记录器的级别更改为“OFF”时,我得到一个异常,即不支持记录器的格式。我已经尝试过在记录器名称上没有和有引号但没有运气,因为错误似乎与无效的 JSON 格式有关。这很奇怪,因为 DW 文档显示支持这种格式。
org.eclipse: OFF
"org.eclipse": OFF

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

当我将此记录器更改为将 level 属性作为记录器的子属性时,DW 接受该格式,并且我不再在控制台中收到此记录器的日志消息。
org.eclipse:
  level: OFF

话虽如此,带有阈值 WARN 的控制台附加程序会阻止所有消息以正确和不正确的级别进入控制台。我不确定这是否有帮助,但尝试将“org.eclipse”更改为另一种格式,也许这会有所帮助,因为我无法使用 DW 1.0.5 复制该问题,因为所有消息都将发送到正确的位置正确的水平。

附言我从 Intellij 执行了所有测试,而不是从命令执行。

关于dropwizard - 为什么没有应用我的 dropwizard 日志记录配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48813976/

相关文章:

java - 使用 DropWizard 对 JAX-RS 端点执行单元测试时无法挂起异步请求的连接

java - 使用 EclipseLink 获取数据库备份/转储

dropwizard - Dropwizard 中的多个 AuthFactory

java - Dropwizard + Guice Bundle 在模块中获取应用程序配置

configuration - Dropwizard 集成测试 : config resource file not found

java - 删除向导 AspectJ 指标不通过 JConsole MBean 报告指标

java - 如何在 dropwizard 中进行身份验证

java - Dropwizard/hibernate : persisting objects with bidirectional one-many relationships gives error "NULL not allowed for column"

java - Dropwizard Rest API 的 JSON 正文开头处存在无效字符

java - 通过基本身份验证端点创建 JSON Web token ?下拉 Sprite