在dropwizard中,如何使用yaml文件将System.out.print消息重定向到文件?

时间:2017-02-06 11:22:35

标签: logging stdout logback dropwizard

我正在使用dropwizard 0.9.2。我想在我的应用程序或导入的库中使用任何打印语句来登录文件。

我试过

Doctrine 2 documentation for Custom Mapping Types

但无法将out_log从其属性文件映射到我的yaml文件。

1 个答案:

答案 0 :(得分:0)

我建议不要打印,而是使用记录器。

进入日志记录部分的配置 您可以在我的示例INFO中定义默认级别 然后你可以用特定的记录器和追加器定义一些记录器 对于com.mystuff包,所有级别都会记录到文件中并旋转。

您还可以定义一些全局appender,其中一个用于控制台。

logging:
  level: INFO
  loggers:
    io.dropwizard: DEBUG
    org.eclipse.jetty.servlets: DEBUG
    org.hibernate.SQL: ALL
    com.mystuff:
        level: ALL,
        additive: false
        appenders:
            - type: file
              archive: true
              timeZone: UTC
              currentLogFilename: /var/log/mine/stuff.log
              archivedLogFilenamePattern: /var/log/mine/stuff-%d.log.gz
              archivedFileCount: 50
              logFormat: "%date;%-5level;%message%n"
            - type: console
              logFormat: "%red(CDR) [%magenta(%date)] [%thread] [%cyan(%logger{0})]: %message%n"
  appenders:
    - type: console
      logFormat: "%highlight(%-5level) [%magenta(%date)] [%thread] [%cyan(%logger{0})]: %message%n"

对于您的情况,特定记录器是outLog,拦截器发送ERROR日志

logging:
    level: ALL
    logger:
      outLog:
        level: ERROR
        additive: false
        appenders:
            - type: file
              archive: true
              timeZone: UTC
              currentLogFilename: /var/log/mine/extra.log
              archivedLogFilenamePattern: /var/log/mine/extra-%d.log.gz
              archivedFileCount: 50
              logFormat: "%date;%message%n"
    appenders:
        - type: file
          archive: true
          timeZone: UTC
          currentLogFilename: /var/log/mine/stuff.log