アプリケーションのmaxfileサイズを設定する必要がありますが、現在はDropwizardコアバージョン0.8.4を使用しています。ファイルアペンダーはこの機能をサポートしていません。Dropwizardカスタムロガーはファイルにログをダンプしません
私は最新のdropwizard(私の必要性をサポートしています)バージョンへのアップデートとしてカスタムアペンダーを作成して、今すぐオプションではなく、以下のようにアプローチしました。
private void initLogging(Configuration configuration) throws JoranException {
final File logDir = new File("/tmp/enforcer");
final File logFile = new File(logDir, "wallet.log");
final LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
RollingFileAppender<ILoggingEvent> rollingFileAppender = new RollingFileAppender<ILoggingEvent>();
rollingFileAppender.setFile(logFile.getAbsolutePath());
rollingFileAppender.setName("com.documents4j.logger.server.file");
rollingFileAppender.setContext(loggerContext);
FixedWindowRollingPolicy fixedWindowRollingPolicy = new FixedWindowRollingPolicy();
fixedWindowRollingPolicy.setFileNamePattern(logFile.getAbsolutePath() +"%i.gz");
fixedWindowRollingPolicy.setMaxIndex(7);
fixedWindowRollingPolicy.setContext(loggerContext);
fixedWindowRollingPolicy.setParent(rollingFileAppender);
fixedWindowRollingPolicy.start();
SizeBasedTriggeringPolicy<ILoggingEvent> sizeBasedTriggeringPolicy = new SizeBasedTriggeringPolicy<ILoggingEvent>();
sizeBasedTriggeringPolicy.setMaxFileSize("2KB");
sizeBasedTriggeringPolicy.setContext(loggerContext);
sizeBasedTriggeringPolicy.start();
rollingFileAppender.setRollingPolicy(fixedWindowRollingPolicy);
rollingFileAppender.setTriggeringPolicy(sizeBasedTriggeringPolicy);
rollingFileAppender.start();
System.out.println("Logging: The log is written to " + logFile);
final ch.qos.logback.classic.Logger log = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME);
log.setLevel(Level.DEBUG);
log.addAppender(rollingFileAppender);
}
@Override
public void run(Configuration configuration, Environment environment) throws Exception
{
initLogging(configuration);
}
私のYAMLファイルの設定私は自分のアプリケーションを実行すると
logging:
level: INFO
org.springframework.retry.support.RetryTemplate: DEBUG
appenders:
- type: file
currentLogFilename: /tmp/enforcer.log
threshold: ALL
archive: true
archivedLogFilenamePattern: /tmp/enforcer-%d.log
archivedFileCount: 5
timeZone: UTC
logFormat: '%-5level [%date{yyyy-MM-dd HH:mm:ss,SSS}] [%X{realdocRequestId}] %logger{15}: %m%n'
は、今私は、カスタムログファイル(/tmp/enforcer/wallet.log)は、特定のディレクトリに作成されていても、注目されているが、実際のログはダンプされません。つまり、wallet.logファイルのサイズは0 kbです。ここで、yamlで構成されたログファイルが作成され、サイズは一定のkbであり、ログイベントが生成されると増加します。
私は何が間違っているのか理解できません。助けに感謝します。
、役に立てば幸いすべてdropwizardバージョンのサポートカスタムロガー。あなたはそれらを作成し、それらについてDWに伝えるだけです。私はここでそれを行う方法を実演しました:http://stackoverflow.com/questions/27483442/dropwizard-doesnt-log-custom-loggers-to-file/33085996#33085996あなたは工場を上書きする必要はありません。新しいLogger implを作成し、それに正しく注釈を付けてMETA-INFの場所に追加するだけで、DWが見つけて初期化することができます。 – pandaadb
@pandaadbあなたの答えに感謝しますが、私のコードが失敗する理由を知りたいのですが? – RIPAN