QA@IT
«回答へ戻る

回答を投稿

Weblogic 12、Java7ですが、こちらでは提示サイトのような手段でログを表示できました。

  1. $BEA_HOME/modules/com.bea.core.weblogic.commons-logging_2.0.0.0.jarをWEB-INF/libへコピーする(Weblogic がversion12だったので、2.0.0.0です)。
  2. Apacheなどで拾ってきたcommons-logging.jarをWEB-INF/libへコピーする。
  3. ソースは下記(参照3-4修正版)を使用。
  4. Eclipseの該当Webプロジェクトをwar形式でエクスポートし、Weblogicへデプロイする。
  5. 実行する(今回はJSPからクラスを呼び出しました)とserver.logにメッセージが出力される。
package jp.co.atmarkit.qa;
//↑packageを指定しないと外部から呼びだせない
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;
 public class MyCommonsTest {
  public void testWLSCommonsLogging() {
    //Weblogicが起動時に設定するので削除
    //System.setProperty(LogFactory.FACTORY_PROPERTY,
    //    "weblogic.logging.commons.LogFactoryImpl");
    //LogFactoryインスタンスは直接呼ぶ必要がないので修正
    Log clog = LogFactory.getLog(MyCommonsSample.class);
    clog.debug("Hey this is common debug");
    clog.fatal("Hey this is common fatal", new Exception());
    clog.error("Hey this is common error", new Exception());
    clog.trace("Dont leave your footprints on the sands of time");
  }
}

失敗しそうな箇所は、下記の3つ、対応策も書いてみました。

  1. WEB-INF/libにjarを入れていない。→ClassNotFoundExceptionが発生し、server.logに記録されている。
  2. WeblogicのLogクラスではなくJDK標準のLogクラスを使ってしまう。→Weblogicを起動したコンソールに、ログメッセージが表示される。
  3. server.logの見落とし。→server.log内のメッセージを検索して探す。
  4. warがキャッシュされデプロイ更新できていない。→Webアプリを削除後、ディレクトリからも一度削除し、再デプロイする。

#ログ出力しかしないコードをどうやって正常終了したか確認できるのか、ちょっと不思議です。

Weblogic 12、Java7ですが、こちらでは提示サイトのような手段でログを表示できました。

1. $BEA_HOME/modules/com.bea.core.weblogic.commons-logging_2.0.0.0.jarをWEB-INF/libへコピーする(Weblogic がversion12だったので、2.0.0.0です)。
2. Apacheなどで拾ってきたcommons-logging.jarをWEB-INF/libへコピーする。
3. ソースは下記(参照3-4修正版)を使用。
4. Eclipseの該当Webプロジェクトをwar形式でエクスポートし、Weblogicへデプロイする。
5. 実行する(今回はJSPからクラスを呼び出しました)とserver.logにメッセージが出力される。

```java
package jp.co.atmarkit.qa;
//↑packageを指定しないと外部から呼びだせない
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;
 public class MyCommonsTest {
  public void testWLSCommonsLogging() {
    //Weblogicが起動時に設定するので削除
    //System.setProperty(LogFactory.FACTORY_PROPERTY,
    //    "weblogic.logging.commons.LogFactoryImpl");
    //LogFactoryインスタンスは直接呼ぶ必要がないので修正
    Log clog = LogFactory.getLog(MyCommonsSample.class);
    clog.debug("Hey this is common debug");
    clog.fatal("Hey this is common fatal", new Exception());
    clog.error("Hey this is common error", new Exception());
    clog.trace("Dont leave your footprints on the sands of time");
  }
}
```

失敗しそうな箇所は、下記の3つ、対応策も書いてみました。

1. WEB-INF/libにjarを入れていない。→ClassNotFoundExceptionが発生し、server.logに記録されている。
2. WeblogicのLogクラスではなくJDK標準のLogクラスを使ってしまう。→Weblogicを起動したコンソールに、ログメッセージが表示される。
3. server.logの見落とし。→server.log内のメッセージを検索して探す。
4. warがキャッシュされデプロイ更新できていない。→Webアプリを削除後、ディレクトリからも一度削除し、再デプロイする。

#ログ出力しかしないコードをどうやって正常終了したか確認できるのか、ちょっと不思議です。