13

スプリングブートアプリケーションでプログラムでログを構成するにはどうすればよいですか?

xml またはプロパティ ファイルの使用は、私のニーズに対して十分な柔軟性がありません。

更新:次のようなことを達成したい:

@Value("${logging.level.root}")
private String loggingLevelRoot;

@Value("${logging.level.myApp}")
private String loggingLevelMyApp;

@Value("${logging.file}")
private boolean fileAppenderEnabled;

....

setLevel(Logger.ROOT_LOGGER_NAME, Level.toLevel(loggingLevelRoot)));
setLevel("com.myapp", Level.toLevel(loggingLevelMyApp)));
setLevel("org.springframework", Level.WARN);
setLevel("org.apache.coyote", Level.INFO);
setLevel("org.apache.catalina", Level.INFO);
setLevel("org.apache.catalina.startup.DigesterFactory", Level.ERROR);
setLevel("org.apache.catalina.util.LifecycleMBeanBase", Level.ERROR);

Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
logger.addAppender(createConsoleAppender());
if (fileAppenderEnabled) {
    logger.addAppender(createFileAppender());
}

私が環境ごとに持っているのは次のとおりです。

  • logging.level.root=[情報、デバッグ、..]
  • logging.level.myApp=[情報、デバッグ、..]
  • logging.file=[真 | 間違い]

XML、Groovy、および私が本当に扱いたくない他の形式の重複はありません。

結局のところ、これは実際には、Spring JavaConfig が Bean に対して行ったのと同じ柔軟性をログに記録することに関するものです。XML やその他のファイル形式は静的すぎて、重複が多すぎて、アプリケーションの残りの構成と十分に統合されていません。

ロギングを他の Bean やサービスとは異なる方法で構成する必要があるのはなぜですか? 意味がない。

4

1 に答える 1