2

Weblogicのサーバーログのログ形式を変更したい。現在、デフォルトの形式を使用してログを生成しています。独自の形式を指定できるようにしたいと思います。

たとえば、次のようなログが生成されます。

####<Jan 21, 2010 3:24:24 PM EST> <Info> <Socket> <FS2LOANER-00981> <DPSCoreServer1> <[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1264105464314> <BEA-000436> <Allocating 2 reader threads.> 
####<Jan 21, 2010 3:24:24 PM EST> <Info> <Socket> <FS2LOANER-00981> <DPSCoreServer1> <[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1264105464314> <BEA-000446> <Native IO Enabled.> 

WeblogicにログシステムとしてLOG4Jを使用させ、目的のログ形式を定義するlog4j.propertiesファイルを使用させることにより、ログ形式を変更しようとしました。ただし、weblogicはlog4j.propertyファイルの設定を取得せず、何を試しても、目的の形式でログインし続けます。

これは事実上、次の投稿と非常によく似た質問ですが、その質問には実際には答えられませんでした(承認された答えは、log4jデバッグをオンにする方法に関するものでしたが、weblogicがlog4j.propertiesを取得しない理由を理解するのに役立ちませんでしたファイル)。weblogic9/10でlog4jロギングを使用する

4

5 に答える 5

2

次のようにドメイン起動クラスを作成します。

import org.apache.log4j.PatternLayout;

import weblogic.logging.LoggerNotAvailableException;
import weblogic.logging.log4j.Log4jLoggingHelper;

public class LoggingConfigurator {
    public static void main(String[] args) {
        try {
            System.out.println("Configuring Log4j pattern");
            Log4jLoggingHelper.getLog4jServerLogger().getAppender("WLLog4jRotatingFileAppender")
                    .setLayout(new PatternLayout("%d{ISO8601} %-5p [%c] - %m%n"));
        } catch (LoggerNotAvailableException e) {
            e.printStackTrace();
        }
    }
}

アムノン

于 2010-12-02T13:42:04.020 に答える
1

私の知る限り、WebLogic Server独自のログメッセージ形式を変更することはできません(また、変更したくありません)(問題が発生した場合に必要な情報をサポートが提供できることを非常に嬉しく思います)。

ただし、Log4jを使用するようにWebLogicを設定でき(WebLogic Logging ServicesでLog4jを使用する方法を参照)、Log4jが有効になっている場合はorg.apache.log4j.Logger、サーバーが使用しているへの参照を取得して、独自のアペンダをアタッチできます。

Log4jを有効にする org.apache.log4j.Loggerと、サーバーが使用している への参照がweblogic.logging.log4j.Log4jLoggingHelper クラスから取得されます。

Log4j Loggerリファレンスを使用すると、独自のカスタムアペンダーをアタッチして、サーバーログイベントを受信できます。たとえば、サーバーログイベントをSyslogまたはWindowsイベントビューアに送信するアペンダーをアタッチできます。さらに、ロガー参照を使用して、WebLogicロギングサービスにログ要求を発行できます。これには、デプロイされたアプリケーションでLog4jライブラリが利用可能である必要があります。

ただし、これはWebLogic自体のログを置き換えるものではありません。

于 2010-01-26T14:41:17.240 に答える
0

WebLogic のロガーを置き換えるつもりはありませんが、ログ形式を構成したいという強い願望があります。Amnon が投稿した方法は非常にうまく機能します (そのため、形式を変更できないと言う理由がわかりません)。追加の詳細が欲しいです。

この方法で私が目にする唯一のマイナス点は、StdOut/StdErr をロギング サブシステムにリダイレクトした場合、%c 変換文字の値が空のログに表示されることです。レイアウト パターンを変更しない場合は、代わりに and が表示されます。

これが、元のパターン レイアウト文字列を確認したかったので、変更を加えてログ ファイルに保存することができました。

于 2011-03-01T01:04:22.013 に答える
0

Weblogic は log4j.properties があることを認識していないため、log4j.properties を取得していません。

サーバーのクラスパスに移動し、パスをプロパティ ファイルに追加し、変更を保存してサーバーを再起動する必要があります。それはトリックを行う必要があります。

于 2016-05-06T10:42:29.080 に答える