5

weblogic では、Serverlog がデフォルトの JDK ロギングの代わりに log4j を使用するようにコンソールで構成できます。

ただし、serverlog は log4j.properties ファイルを使用していませんが、config.xml の構成を使用しているようです。log4j.properties ファイルがクラスパスにあり、これらのプロパティを設定した場合でも:

set JAVA_OPTIONS=%JAVA_OPTIONS% -Dlog4j.configuration=file:<path>/log4j.properties
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger   
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.log.Log4jLoggingEnabled=true 

Weblogic Server Logging に log4j.properties 構成を使用することはできますか? それとも、log4j 構成を Java コードでのみ変更できますか?

4

5 に答える 5

6

特にWebLogicについては何も知りませんが、追加-Dlog4j.debugすると、log4jが構成を探している場所を教えてくれます。以前に tomcat でログの問題を追跡するときに、これが非常に貴重であることがわかりました。

log4j 構成プロセスの詳細については、PropertyConfiguratorおよびDOMConfiguratorのドキュメントを確認してください。

于 2009-03-04T14:13:42.447 に答える
0

log4j.xml をクラスパスに入れると、WebLogic がそれを取得します。私は、WebLogic で log4j を使用して Apache Commons ロギングを使用していますが、これは簡単に行うことができます。これらの Java オプションは必要ありません。

于 2009-02-23T13:31:00.440 に答える
0

上記のオプションはどこに設定していますか?log4j を使用する各管理対象サーバーのサーバー開始オプションに -Dlog4j オプションを入れてみてください。

于 2009-02-25T15:10:04.650 に答える
0

意図したとおりにこれが機能することはありませんでした。

私が最終的に行ったことは、ある種の回避策を作成することでした。Weblogic サーバーログをリッスンするハンドラーを登録します。このハンドラーから、log4j への独自のロギングを行います。そのロギングは、私がやりたいことをするためにリダイレクトできます。

カスタム logHandler を作成します。

public class CustomLogHandler extends Handler {
..

    public CustomLogHandler () throws SecurityException, IOException,
            NamingException {

        String log4jConfig = LogFilterConfiguration.getLog4jDirectory();
        classlogger.info("log4j configured for file"+ log4jConfig );
        PropertyConfigurator.configure(log4jConfig);
        logFilterConfiguration = new LogFilterConfiguration();
    }

    public void publish(LogRecord record) {
        WLLogRecord rec = (WLLogRecord) record;
        if (!isLoggable(rec))
            return;
        if (getLoggerName().. is something i want to log) {
                        // do my own log4j logging
                  }

次に、ApplicationLifecycleListener を作成します。postStart メソッドを使用:

public void postStart(ApplicationLifecycleEvent evt) {
    Logger logger = LoggingHelper.getServerLogger();
    Handler oldHandler = null;
    Handler[] currentHandlers = logger.getHandlers();

              .. code to remove an old custom handler if exists...
    with something like logger.removeHandler(oldHandler);

    // add custom handler to serverlogger.
    CustomLogHandler h = null;      
    try {
        h = new CustomLogHandler ();
        // If handler was removed we can add a new version.
        if (!(unRemovedHandlerClasses.contains(h.getClass()))){
            logger.addHandler(h);
            registerMBean(h) ;
        }
    } catch (Exception nmex) {
    classLogger.error("Error adding CustomLogHandler to serverlogger "
                + nmex.getMessage());
        logger.removeHandler(h);
    }


}
于 2010-01-21T21:15:43.693 に答える
0

デフォルトの Java ロギングの代わりに Log4j ロガーへのロギングを指定するには、次のようにします。

* When you start the Administration Server, include the following Java option in the weblogic.Server command:

  -Dweblogic.log.Log4jLoggingEnabled=true 

出典: http://edocs.bea.com/wls/docs103/logging/config_logs.html#wp1014610

于 2009-03-03T13:06:49.107 に答える