代码之家  ›  专栏  ›  技术社区  ›  tam

为什么不应用dropwizard日志记录配置?

  •  4
  • tam  · 技术社区  · 6 年前

    我的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
    

    配置。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
    

    使用我提供的配置,可以创建日志文件,但从来不会写入日志文件。

    1 回复  |  直到 6 年前
        1
  •  3
  •   André Barbosa    6 年前

    我在配置中注意到的第一件事是,“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
    

    话虽如此,带有threshold WARN的控制台appender阻止所有消息进入控制台,包括正确级别和错误级别的消息。我不确定这是否有帮助,但尝试将“org.eclipse”更改为另一种格式,这可能会有所帮助,因为我无法使用DW 1.0.5复制该问题,因为所有消息都将以正确的级别发送到正确的位置。

    P、 我从Intellij执行所有测试,而不是从命令执行。