BEA Weblogic9.1jでLog4jを使う(メモ)
Weblogic9.2jでは問題が無いのだが、同9.1jはそのままの環境設定ではLog4jが使えないようで以下の例外が発生する。
syncInitServlet の init メソッドがバックグラウンドで実行中に失敗しました。例外は次のとおりです。java.lang.NoSuchMethodError: log java.lang.NoSuchMethodError: log at org.apache.commons.logging.impl.Log4JCategoryLog.error(Log4JCategoryLog.java:149) at org.apache.struts.action.ActionServlet.init(ActionServlet.java:364) at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.init(AutoRegisterActionServlet.java:92) at org.apache.beehive.netui.pageflow.PageFlowActionServlet.init(PageFlowActionServlet.java:125) at com.bea.console.internal.ConsoleActionServlet.init(ConsoleActionServlet.java:185) at javax.servlet.GenericServlet.init(GenericServlet.java:256) at weblogic.servlet.AsyncInitServlet.initDelegate(AsyncInitServlet.java:94) at weblogic.servlet.internal.WebAppServletContext$AsyncInitRequest.run(WebAppServletContext.java:1641) at weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207) at weblogic.work.ExecuteThread.run(ExecuteThread.java:179)
対処方法は以下の通り。
- wllog4j.jar, wlcommons-logging.jar, log4j.jarを対象プロジェクトのdomain/libディレクトリにコピーして配置
- 対象プロジェクトのdomainディレクトリにcommons-logging.propertiesという名前のファイルを以下の内容で作成する。
- commons-logging.properties
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
ログサービスが実質Log4だけだった時は(jar hellはあったが)楽だったのだが、今やJSDK謹製のロギングとcommon-loggingがあるので非常にややこしくなっている。勘弁して欲しい。