3

Javaアプリケーションを起動すると、logbackがログファイルへの書き込みを拒否することがあります。また、深夜(または深夜以降の最初のログイベント)にログファイルのロールを拒否することもあります。その結果、ログイベントが無効になります。ログバックがログのロールに失敗したときにメインログファイルを見ると、昨日の日付で23:59のような時間があり、それ以降のすべてのログステートメントは取り返しのつかないほど失われます。私はかなり単純な構成ファイルを持っています、そしてそれは正しいように見えます。ほとんどの場合機能するので、確かに正しいはずです。

これが私の設定ファイルです:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!--See http://logback.qos.ch/manual/appenders.html#RollingFileAppender-->
    <!--and http://logback.qos.ch/manual/appenders.html#TimeBasedRollingPolicy-->
    <!--for further documentation-->
    <append>true</append>
    <File>aggregator.log</File>
    <encoder>
        <!-- was: %d{yyyy-MM-dd HH:mm:ss}%5p [%t] (%F:%L) - %msg%n -->
      <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] \(%class{25}:%line\) - %msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- By setting the name to .gz here, we get free compression. -->
      <fileNamePattern>aggregator.log.%d{yyyy-MM-dd}.gz</fileNamePattern>
    </rollingPolicy>
  </appender>
  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] \(%class{25}:%line\) - %msg%n</pattern>
    </encoder>
  </appender>
  <root level="DEBUG">
    <appender-ref ref="file"/>
    <appender-ref ref="console"/>
  </root>
</configuration>

残念ながら、このエラーを確実に再現することはできないため、デバッグは少し困難です。誰かが私が間違っていること、または他に何が問題である可能性があるかを教えてもらえますか?何か助けがあれば、STDOUTとSTDERRを/ dev / nullにリダイレクトします(Linuxで実行しています、ところで)。

4

2 に答える 2

9

問題をデバッグするには、<configuration debug="true">stdoutを使用し、リダイレクトしないでください。Logbackは、構成を解析するとき、および問題が発生したときに、そこにメッセージを出力します。

于 2010-08-25T14:13:17.420 に答える
0

これはログバックとはほとんど関係がないことがわかりました。問題は、アプリケーションの適切なアクセス許可を指定していない.policyファイルがあったことです。ファイルを回転させることができたと思ったのは、以前のファイルを手作業で移動または削除したときでした。logbackに、自身のログをローテーションするのに十分な権限があることを確認することで、これを解決しました。

于 2011-02-28T14:04:58.940 に答える