2016-04-20 75 views
1

私は、Ubuntuを実行している仮想マシンでtomcat 7を使用しています。今のところ、私は/var/lib/tomcat7/logs/catalina.outcatalina.outというファイルがあり、それは20GBを超えています。最初にログファイルをthisチュートリアルで回転させてみました。私はそれが夜の終わりにそれを監視することを知った。手動でサービスを開始しても、実際にはあまり効果がありませんでした。そこでファイルを削除しましたが、Tomcatを再起動した後に表示されました。tomcatのcatalina.outファイルサイズを常に制限します

私は、受け入れ答えhereからconf/logging.propertiesに移動して、次の行を変更することでした何をやってみました:.handlers = 1catalina.org.apache.juli.FileHandlerこれは持っているようだ

.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

少なくとも私が仮想マシンを再起動するまで、1分間は働いていました。それが起こったら、別の20GBのcatalina.outファイルで終わった。

ファイルが5MBを超えてしまったり、ファイルが制限されたりするという実績のある方法はありますか?

+0

あなたは[javaのログイン](https://docs.oracle.com/javase/8/docs/technotes/guides/logging/overview.html)と深く見ている必要があり、[Tomcatのでログイン](http://tomcat.apache.org/tomcat-7.0-doc/logging.html)。 – Stefan

+0

http://stackoverflow.com/questions/8342336/how-to-set-maximum-number-of-rolls-and-maximum-log-size-for-tomcat – Stefan

答えて

0

「Stefan」は、Tomcatに付属しているものの代わりに標準java.util.logging.FileHandlerを使用できることを指摘しました。

デフォルトでは、org.apache.juli.FileHandlerのレベルはALLに設定されています。ハンドラのログレベルを上げて、デバッグタイプのメッセージのグループをフィルタすることができます。

.handlers = 1catalina.org.apache.juli.FileHandler 
1catalina.org.apache.juli.FileHandler.level=WARNING 
#1catalina.org.apache.juli.FileHandler.level=OFF 

あなたが.filterプロパティを設定することで、カスタムフィルタやハンドラにinstall itを記述する必要がありますようにそれ以外の場合は、見えます。

public class FileLengthFilter implements Filter { 

    private final File target; 
    private final long limit; 

    public FileLengthFilter() { 
     final String p = getClass().getName(); 
     LogManager lm = LogManager.getLogManager(); 
     String v = lm.getProperty(p + ".file"); 
     target = new File(v == null ? "." : v); 

     v = lm.getProperty(p + ".limit"); 
     long l; 
     try { 
      l = Long.parseLong(v); 
     } catch (RuntimeException re) { 
      l = 5L * 1024L * 1024L; 
     } 
     this.limit = l; 
    } 

    @Override 
    public boolean isLoggable(LogRecord record) { 
     try { 
      return target.length() <= limit; 
     } catch (RuntimeException se) { 
      return false; 
     } 
    } 
} 
関連する問題