プロジェクトでLogBackを使用しています。データベースの値に応じてロガーを設定します。つまり、DB値がtrueに設定されている場合、ロガーはファイルとDBアペンダーの両方を使用する必要があります。falseの場合、ロガーはDBアペンダーのみを使用する必要があります、
また、静的な最終ロガーの使用を維持したいので、ロガーが呼び出されるたびに新しいインスタンスを作成しません。
どうすればこのようなことができますか?
よろしく、
この例 の説明に従って、プログラムでLogbackを構成する必要があります。
public class Main {
public static void main(String[] args) {
Logger logger = (Logger) LoggerFactory.getLogger("abc.xyz");
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
FileAppender<LoggingEvent> fileAppender =
(FileAppender<LoggingEvent>) logger.getAppender("file");
if(fileAppender != null) {
fileAppender.stop();
fileAppender.setFile("new.log");
PatternLayout pl = new PatternLayout();
pl.setPattern("%d %5p %t [%c:%L] %m%n)");
pl.setContext(lc);
pl.start();
fileAppender.setLayout(pl);
fileAppender.setContext(lc);
fileAppender.start();
}
... etc
}
}
データベースから構成プロパティを読み取る背後に特別な理由はありますか? 1つの提案は、JNDIを使用することです。 Logbackは、タグを使用してJNDI構成値を読み取ることができます。