Log4j2を使用するWeblogic12cは、停止/開始後にロギングを停止します

ローランド

Weblogic 12cで戦争を停止してから再開すると、独特の動作が発生しました。私の理解を超えた何らかの理由で、Log4j2はログへの書き込みを停止します。新しいログファイルが作成されますが、エントリは書き込まれません。

デバッグしたところ、戦争をインストールしたときと同じようにLog4jServletContainerInitializerとLog4jServletContextListenerが呼び出されることがわかりました。私は違いに気づきませんでした(残念ながら、それは私の注意力のテストにすぎません)。

では、Weblogic 12cのLog4J2に関して、インストールと起動で何が異なるのか、そしておそらくどこでエラーを探すのかについて、何か考えがありますか?

スカイウォーカー

あなたの問題:

私の理解を超えた何らかの理由で、Log4j2はログへの書き込みを停止します。新しいログファイルが作成されますが、エントリは書き込まれません。


根本原因分析:

それは実際にいくつかの問題で起こります。

  1. log4jの構成がlog4j.propertiesファイルで正しく行われていない場合
  2. 追加プロパティがtrueになっていない場合。
  3. Log4Jとのような2つのロガーを使用する場合JUL、同じappneder(Stdout)を使用します。
  4. log4jjarファイルがクラスパスに正しく設定されていない場合。

解決:

回答-1:クラスパスには、Log4J呼び出しをインターセプトし、それらをJUL呼び出しに変換するライブラリの設定があります。次に、この問題が発生する可能性があります。したがって、実際に必要なインポートを正しく指定してください。java.util.logging.Loggerまたはorg.apache.log4j.Logger

回答-2:プロパティはcase sensitiveです。だからあなたのfile name would be same with appenderアペンダーをtrueにすることを忘れないでください。

log4j.appender.mainAppender.File=yourLogFile.log
log4j.appender.mainAppender.Append=true

Ans-3:特にHibernateの場合、すべてのロガーが確実に連携するように、slf4jを含めます。


回答-4:この問題はTomcatで発生することがあります。Tomcatセキュリティが有効になっていて、ポリシーファイルからいくつかのアクセス許可が欠落している場合、このタイプの問題が発生します。権限を付与した後、正常に動作します。


Log4Jは実際に何をしますか?

Log4Jは、情報以上のメッセージのみを出力し、コンソールとファイルの両方に出力します。に変更INFOするとALLこの動作を変更できますlog4j.rootLoggerそれが機能しない場合は-Dlog4j.debug=true、JVM引数に追加します。これにより、Log4Jはそれ自体に関するデバッグメッセージを(System.outに)発行し、何が起こっているかを確認できます。クレジットは@に行くアイザック

リソースリンク:

  1. Log4Jはログファイルを作成しますが、書き込みは行いません
  2. log4jログがファイルに書き込まれない問題

log4j2の更新:


多くのおかげでrgoers log4j2のための問題を指しているため。更新中です。

ウィルキンソンのPOVからの根本原因分析

arestartがトリガーされると、DevToolsが実行され、登録されているすべてのシャットダウンフックがクリアされます。そのようなフックの1つがLog4J2DefaultShutdownCallbackRegistryです。Log4jContextFactoryはへの参照を維持し、DefaultShutdownCallbackRegistryLogManagerはLog4jContextFactoryへの静的参照を保持します。Log4J2's classes are loaded by the app classloader which means that there's a single LogManager, Log4jContextFactory, and DefaultShutdownCallbackRegistry shared across restarts.

場合はDefaultShutdownCallbackRegistry、再起動の一部として実行され、それが停止LoggerContextしてまで、自身の状態を設定しますSTOPPED再起動が進むと、新しいものLoggerContextが作成され、そのシャットダウンコールバックをレジストリに登録しようとします。レジストリの状態がまだであるため、これは失敗しますSTOPPED

解決:

Wilkinsonaは、この問題を解決するためのハッキング方法を提供しました。それを以下に示します。それに対処してみてください。

リスタータがJVMのシャットダウンフックを実行する前に、レジストリ内のコールバックをクリアすることをお勧めします。例外の発生を防ぎ、再起動後もログは引き続き機能します。

private void prepareLog4J2ForRestart() throws Exception {
    if (ClassUtils.isPresent("org.apache.logging.log4j.LogManager",
            getClass().getClassLoader())) {
        LoggerContextFactory factory = LogManager.getFactory();
        Field field = ReflectionUtils.findField(factory.getClass(),
                "shutdownCallbackRegistry");
        ReflectionUtils.makeAccessible(field);
        ShutdownCallbackRegistry shutdownCallbackRegistry = (ShutdownCallbackRegistry) ReflectionUtils
                .getField(field, factory);
        Field hooksField = ReflectionUtils
                .findField(shutdownCallbackRegistry.getClass(), "hooks");
        ReflectionUtils.makeAccessible(hooksField);
        @SuppressWarnings("unchecked")
        Collection<Cancellable> state = (Collection<Cancellable>) ReflectionUtils
                .getField(hooksField, shutdownCallbackRegistry);
        state.clear();
    }
}

リソースリンク:

  1. Log4j2.4はrc1devtoolsを壊します
  2. DevToolsの再起動でシャットダウンフックではなくcontext.close()を呼び出す

UPDATE2:

期待される動作を得るために、JEEアプリケーションに追加するリスナーの種類は何ですか?

リスナーを書くために、あなたはチュートリアルに従うことができます

  1. ServletContextListenerの例
  2. リスナークラスの作成
  3. サーブレットリスナーの例– ServletContextListener、HttpSessionListener、およびServletRequestListener

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Log4j2を使用するWeblogic12cは、停止/開始後にロギングを停止します

分類Dev

weblogic12cでのlog4jロギングの実装

分類Dev

bashに日記機能(ロギングを開始および停止するため)はありますか?

分類Dev

log4j2を使用したSpring-Bootロギング?

分類Dev

Log4j2を使用したSpringのロギング

分類Dev

log4j2 を使用したロギング

分類Dev

Log4j2を使用したSpringBootロギング

分類Dev

Weblogic12Cがログをsyslogに送信する

分類Dev

dockerは停止後にコンテナを開始します

分類Dev

アプリケーションからの大量のロギングがあると、Log4j2非同期ロギングが停止する

分類Dev

log4j2を使用してlog4jログをログに記録する方法

分類Dev

Log4j2を使用してWindowsイベントログにログインします

分類Dev

log4j2を使用してログをKafkaに送信する

分類Dev

Weblogic12cでログファイルにログを記録する方法

分類Dev

Logbackは、Weblogic12cのログを出力しません

分類Dev

Log4j2:ロギングファイルを毎日「制御不能」に出力する

分類Dev

コモンズ-log4j2を使用したロギング

分類Dev

log4j2は定期的にログファイルをクリーニングします

分類Dev

Log4j2を使用したリモートロギング

分類Dev

Log4j2、コマンドライン引数を使用してロギング出力ディレクトリを制御する方法

分類Dev

log4j2.xmlを使用してApache Log4j2パッケージの特定のロギング

分類Dev

Azure Functions:Log4j2を使用してSlf4jバインディングを構成し、ログをappinsightsに送信します

分類Dev

開始後にjqueryfadeOutをキャンセル/停止します

分類Dev

AWS LambdaでLog4J2を使用したロギング-クラスが見つかりません

分類Dev

SonarQube起動エラー:log4j2はロギング実装を見つけることができませんでした。log4j2をファイルパスに追加してください

分類Dev

log4j2起動デバッグログをオフにします

分類Dev

Struts2アプリケーションをWeblogic12cにデプロイする

分類Dev

自動配線SessionFactoryを使用してweblogic12cにデプロイする際の問題

分類Dev

Log4j2がログイベントを取得しています

Related 関連記事

  1. 1

    Log4j2を使用するWeblogic12cは、停止/開始後にロギングを停止します

  2. 2

    weblogic12cでのlog4jロギングの実装

  3. 3

    bashに日記機能(ロギングを開始および停止するため)はありますか?

  4. 4

    log4j2を使用したSpring-Bootロギング?

  5. 5

    Log4j2を使用したSpringのロギング

  6. 6

    log4j2 を使用したロギング

  7. 7

    Log4j2を使用したSpringBootロギング

  8. 8

    Weblogic12Cがログをsyslogに送信する

  9. 9

    dockerは停止後にコンテナを開始します

  10. 10

    アプリケーションからの大量のロギングがあると、Log4j2非同期ロギングが停止する

  11. 11

    log4j2を使用してlog4jログをログに記録する方法

  12. 12

    Log4j2を使用してWindowsイベントログにログインします

  13. 13

    log4j2を使用してログをKafkaに送信する

  14. 14

    Weblogic12cでログファイルにログを記録する方法

  15. 15

    Logbackは、Weblogic12cのログを出力しません

  16. 16

    Log4j2:ロギングファイルを毎日「制御不能」に出力する

  17. 17

    コモンズ-log4j2を使用したロギング

  18. 18

    log4j2は定期的にログファイルをクリーニングします

  19. 19

    Log4j2を使用したリモートロギング

  20. 20

    Log4j2、コマンドライン引数を使用してロギング出力ディレクトリを制御する方法

  21. 21

    log4j2.xmlを使用してApache Log4j2パッケージの特定のロギング

  22. 22

    Azure Functions:Log4j2を使用してSlf4jバインディングを構成し、ログをappinsightsに送信します

  23. 23

    開始後にjqueryfadeOutをキャンセル/停止します

  24. 24

    AWS LambdaでLog4J2を使用したロギング-クラスが見つかりません

  25. 25

    SonarQube起動エラー:log4j2はロギング実装を見つけることができませんでした。log4j2をファイルパスに追加してください

  26. 26

    log4j2起動デバッグログをオフにします

  27. 27

    Struts2アプリケーションをWeblogic12cにデプロイする

  28. 28

    自動配線SessionFactoryを使用してweblogic12cにデプロイする際の問題

  29. 29

    Log4j2がログイベントを取得しています

ホットタグ

アーカイブ