17

java.util.loggingを使用するいくつかのWebアプリケーションがあります。Tomcat 5.5は、各Webアプリケーションが独自のログファイルを持つようにJuliロガーを使用するように構成されています。問題は、Juliに最大ファイルサイズとファイル数のプロパティがないことです。Juliを使用すると、ファイルは無制限に大きくなり、1日の終わりにのみロールされます。また、無制限の数のログファイルが保持されます。

このページでFileHandlerのプロパティを確認できます-ApacheTomcat5.5のドキュメント
制限やカウントのプロパティはありません(次の行は何もしません)
org.apache.juli.FileHandler.limit=102400
org.apache.juli.FileHandler.count=5

Webアプリケーションを変更せずに、ログファイルサイズに何らかの制限があるアプリケーションごとに一意のログファイルを取得する方法はありますか?

更新: 私が見つけた解決策は、Juliロガーをまったく使用していませんでした! java.util.logging.FileHandler.limit=102400
java.util.logging.FileHandler.count=5

ありがとう、

グレッグ

4

2 に答える 2

3

更新:もっと読んだ後、あなたの要点がわかりました。「Tomcat の JULI 実装は、完全な機能を備えたロギング ライブラリになることを意図したものではなく、これらのライブラリへの単純な橋渡しにすぎません。ただし、JULI はそのハンドラを構成するためのいくつかのプロパティを提供します。これらは以下にリストされています。」デフォルトの java.util.Logging 実装が制限されすぎていると彼らが言うのはおかしいですが、さらに制限的な実装を提供することでそれを回避しています。

FileHandler の Javadoc

  • java.util.logging.FileHandler.limit は、任意の 1 つのファイルに書き込むおおよその最大量 (バイト単位) を指定します。これがゼロの場合、制限はありません。(デフォルトでは制限なし)。
  • java.util.logging.FileHandler.count は、循環する出力ファイルの数を指定します (デフォルトは 1)。

Web アプリごとに 1 つのファイルの場合、おそらくロガーの名前で区切る必要があります。これは、アプリごとにロガーがどのように作成されるかによって異なります。パッケージ名またはクラス名に基づいている場合は、それに基づいてログをフィルタリングできます。あなたが提供したリンクのサンプルがこれを行う方法を示しているようです

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = \
   2localhost.org.apache.juli.FileHandler
于 2008-09-25T21:37:37.743 に答える
3

編集: このセットアップでは不可能な可能性がある webapp ごとのログ記録が必要であることに気付きました...

私の提案は、Tomcat 6.0 を使用していると仮定して、完全な commons-logging 用に追加のコンポーネントをコンパイルし、Log4j を使用してローリング ログを構成することです。

ビルド手順はこちら http://tomcat.apache.org/tomcat-6.0-doc/building.html

次に、Tomcat の /bin ディレクトリにある tomcat-juli.jar を置き換え、log4j.jar および log4j.properties とともに tomcat-juli-adapters.jar を /lib ディレクトリに配置します。

次に、次のようなものを使用します。

<appender name="file" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="logfile.log"/>
  <param name="Threshold" value="INFO"/>
  <param name="MaxFileSize" value="10MB"/>
  <param name="MaxBackupIndex" value="3"/>
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{ISO8601} %p %m%n"/>
  </layout>
</appender>
于 2008-10-05T14:51:51.320 に答える