3

Webアプリケーションサーバーがログに記録する情報とその理由を教えてください。

私が理解していることから

org.apache.commons.logging.Log

は、他のLoggingクラスによって提供される機能を抽象化するインターフェースであり、同じことがインターフェースLogFactoryにも当てはまります。

私が理解しようとしているコードは-

Log auditLogger = LogFactory.getLog(someString);

生成するLogFactoryを識別するために文字列someStringはどのように使用されますか?使用されているLogクラスとLogFactoryクラスの実装を確認するにはどうすればよいですか?

4

3 に答える 3

5

文字列は任意であり、ロギング出力をリダイレクトまたはフィルタリングidentifierするために使用できます。一般的なアプローチの1つは、classNameを使用することです。

Log auditLogger = LogFactory.getLog(MyCurrentClass.class);

あなたが言ったように、他のロギングライブラリが提供されていない場合commons-loggingにデフォルトで設定されるファサードです。log4jlogbackslf4jjava.util.loggingなどのロギング実装をクラスパスに入れることをお勧めします

たとえば、次のようなlog4j構成ファイルを使用して、ログ出力を制御できますlog4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<log4j:configuration>

    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
        ..... 
    </appender>


    <!-- Send debug information from "com.company.MyCurrentClass" to CONSOLE -->
    <logger name="com.company.MyCurrentClass">
        <level value="DEBUG"/>
        <appender-ref ref="CONSOLE"/>
    </logger>

</log4j:configuration>
于 2011-03-03T09:35:45.323 に答える
1

someString単なるロガー名(または必要に応じてエイリアス、通常はクラス名)です。Logの実装を知る必要はなく、LogFactory構成して使用するだけです。

Webアプリケーションがログに記録する必要のある情報は、このアプリケーションの開発者が知りたい情報です(たとえば、例外の処理、一部の状態フロー、その他の有用な情報)

于 2011-03-03T09:36:41.857 に答える
1

Log logger = LogFactory.getLog(MyCurrentClass.class);Webレイヤー(Struts2アクションまたはJSFバッキングBean)およびEJB3セッションBeanと同様のコードを使用しています。

次に、主にエラーと警告をログに記録しますが、有用な情報も記録します(スケジュールされたジョブの開始と終了、ユーザーログイン、エラーが発生する直前に実行していたことを確認するための特定のユーザーアクションなど)。

logger.debug("Debug message")また、ロギングフレームワークがそれらを受け入れることが有効になっている場合に、より多くの情報をログに記録するために使用することもできます(Log4Jでは、しきい値をDEBUG以下に設定します。これは実行時に実行できます)。デバッグメッセージを最初に抽出/アセンブルする必要がある場合など、それを必要としない一般的なケースにはコストがかかりすぎる可能性がある場合は、最初にチェックすることができますlogger.isDebugEnabled()

通常、各ロガーは、文字列またはクラスのいずれかとして、LogFactory.getLog()メソッドに指定した名前を取得します。これにより、ロガーまたはグループごとに異なる設定を設定できます。

たとえば、のロガーがmy.package.MyClassあり、パッケージ付きのライブラリを使用している場合はorg.library.*、のデバッグメッセージを有効にするようにログフレームワークを構成できますが、のデバッグメッセージは有効にできmy.package.*ませんorg.library.*。このようにして、メッセージをフィルタリングして、より小さく/より読みやすいログを取得できます。

于 2011-03-03T09:50:42.387 に答える