0

log4j.jar (独自の log4j.xml を持つ) を使用してカスタム アプリケーション ログを作成する動的 Web プロジェクトがあり、独自の log4j.jar (独自の log4j.xml を持つ) を持つ API も使用します。また、動的 Web プロジェクトは websphere でホストされ、API は共有ライブラリとして構成されます。

モジュールから API メソッドが呼び出されたとき。次のエラーが SystemErr.log ファイルに出力されます。

Parent: com.ibm.ws.classloader.ProtectionClassLoader@61ea61ea
   Delegation Mode: PARENT_LAST] whereas object of type
[5/30/13 8:05:29:421 EDT] 00000039 SystemErr     R log4j:ERROR "org.apache.log4j.DailyRollingFileAppender" was loaded by [
com.ibm.ws.classloader.CompoundClassLoader@d4c0d4c[war:ModuleName of the Web Project]
   Local ClassPath:class path is printed



[5/30/13 5:32:55:632 UTC] 0000003e SystemErr     R log4j:ERROR Could not instantiate appender named LOGGER_NAME.
[5/30/13 5:32:55:632 UTC] 0000003e SystemErr     R log4j:ERROR A "org.apache.log4j.ConsoleAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
[5/30/13 5:32:55:632 UTC] 0000003e SystemErr     R log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
[5/30/13 5:32:55:633 UTC] 0000003e SystemErr     R log4j:ERROR [
com.ibm.ws.classloader.ExtJarClassLoader@18d418d4[server:0]
   Local ClassPath:  class path is printed

サーバーの起動時に API を初期化する必要があるため、log4j を API から削除することはできません。また、API がモジュールから呼び出されると、上記のエラーが出力されます。

Dynamic web projects log4j.properties

log4j.rootLogger=DEBUG, APP_LOGGER_NAME1

log4j.appender.APP_LOGGER_NAME1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.APP_LOGGER_NAME1.layout=org.apache.log4j.PatternLayout
log4j.appender.APP_LOGGER_NAME1.layout.ConversionPattern=[%20.20d{dd/MMM/yyyy-HH:mm:ss}] %6.6p - %-35.35c{2} :: %m%n
log4j.appender.APP_LOGGER_NAME1.File=path of log file
log4j.appender.APP_LOGGER_NAME1.DatePattern='.'yyyy-MM-dd


API log4j.properties

log4j.rootLogger=DEBUG, APP_LOGGER_NAME2
log4j.appender.APP_LOGGER_NAME2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.APP_LOGGER_NAME2.layout=org.apache.log4j.PatternLayout
log4j.appender.APP_LOGGER_NAME2.layout.ConversionPattern=[%20.20d{dd/MMM/yyyy-HH:mm:ss}] %6.6p - %-35.35c{2} :: %m%n
log4j.appender.APP_LOGGER_NAME2.File=path of log file
log4j.appender.APP_LOGGER_NAME2.DatePattern='.'yyyy-MM-dd

アプリケーション サーバーがホストされている AIX ボックスがあり、ログ ファイル名とファイルのアクセス許可が正しいことに注意してください。ビジネス行動規範のため、問題の説明にそれらを貼り付けていません。

4

1 に答える 1