7

ログ呼び出しでさまざまなレベルの出力をさまざまな場所に送信しようとしています。すべてのログを常にファイルに移動し、INFO 以上のみをコンソールに移動するようにします。それは不可能ですか?私は次のものを持っていますが、動作しません。どちらも常に同じです。

def bySecond = timestamp("yyyyMMdd'.'HHmmss", context.birthTime)

appender("STDOUT", ConsoleAppender) {
  encoder(PatternLayoutEncoder) {
    pattern = "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
  }
}

appender("FILE", FileAppender) {
  file = "./logs/log-${bySecond}.log"
  encoder(PatternLayoutEncoder) {
    pattern = "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
  }
}

logger("com.crystal", WARN, ["STDOUT"])
logger("com.crystal", TRACE, ["FILE"])

root(TRACE)

scan()

異なるレベルに基づいて、同じログ メッセージを 2 つの異なる場所に送信することはできますか?

4

1 に答える 1

7

両方のアペンダーにトレースを送信する

logger 'com.crystal', TRACE, ['STDOUT', 'FILE']

にフィルターを追加しますConsoleAppender

appender("FILE", FileAppender) {
  filter(ch.qos.logback.classic.filter.ThresholdFilter) {
    level = INFO
  }
  ...
}
于 2011-05-14T00:46:42.600 に答える