プロジェクトでLogBackを使用しているので、データベースの値に従ってロガーを構成します。つまり、DB値がtrueに設定されている場合、ロガーはファイルとDBアペンダーの両方を使用する必要があります。falseの場合、ロガーはDBアペンダーのみを使用する必要があります。 、
また、静的な最終ロガーを使用して保持したいので、ロガーが呼び出されるたびに新しいインスタンスを作成することはありません。
では、どうすればこのようなことができますか?
よろしく、
この例で説明されているように、プログラムでログバックを構成する必要があります。
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を使用することです。ログバックは、タグを使用してJNDI構成値を読み取ることができます。