12.07.2015 Views

Web アプリケーションでの log4j 利用ガイド WebOTX V6.4,6.5 編

Web アプリケーションでの log4j 利用ガイド WebOTX V6.4,6.5 編

Web アプリケーションでの log4j 利用ガイド WebOTX V6.4,6.5 編

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Web</strong> アプリケーションでの<strong>log4j</strong> 利 用 ガイド<strong>Web</strong>OTX <strong>V6.4</strong>,<strong>6.5</strong> 編NEC第 二 システムソフトウェア 事 業 部2007 年 5 月 初 版改 版 履 歴i


目 次1. はじめに ...................................................................................................................... 11.1. 対 象 読 者 ............................................................................................................... 11.2. 表 記 について........................................................................................................ 12. <strong>Web</strong>OTXのクラスローダの 仕 組 み .............................................................................. 13. <strong>Web</strong>APから<strong>log4j</strong> 利 用 手 順 ........................................................................................... 33.1. <strong>Web</strong>APに<strong>log4j</strong>を 含 める 場 合 ................................................................................ 33.2. <strong>Web</strong>OTXが 提 供 する<strong>log4j</strong>を 利 用 する 場 合 ............................................................ 53.3. マルチプロセスモードで<strong>Web</strong>APのログ 出 力 を 行 う 場 合 ...................................... 53.4. <strong>Web</strong>APのログ 出 力 にcommons-logging 経 由 で<strong>log4j</strong>を 使 用 する 場 合 ................... 73.5. NTEventLogAppenderを 利 用 する 場 合 ............................................................... 74. おわりに ...................................................................................................................... 8ii


1. はじめに<strong>Web</strong>OTX V6 では、<strong>Web</strong>OTX 自 身 のログ 出 力 に <strong>log4j</strong> を 使 用 しており、<strong>log4j</strong> のロガー 定義 ファイルである <strong>log4j</strong>.xml を 利 用 しています。<strong>Web</strong> アプリケーション( 以 下 <strong>Web</strong>AP)で<strong>log4j</strong> を 利 用 する 場 合 、AP 側 で 利 用 する 定 義 を、<strong>Web</strong>OTX のログ 定 義 が 記 述 してある<strong>log4j</strong>.xml ファイルに 追 記 する 必 要 がありました。<strong>Web</strong>OTX は <strong>V6.4</strong> から、<strong>Web</strong>AP との 定義 の 混 同 を 避 けるために、<strong>Web</strong>OTX のログ 出 力 を 行 うために 独 自 の logger を 利 用 するようになりました。この 変 更 により、<strong>Web</strong>AP で <strong>log4j</strong> を 利 用 する 場 合 は、<strong>log4j</strong> 定 義 ファイルにはユーザ AP で 使 用 する 定 義 のみを 記 述 することが 可 能 になりました。1.1. 対 象 読 者本 ガイドは <strong>Web</strong>OTX <strong>V6.4</strong>、V<strong>6.5</strong> の 各 Edition 上 で 動 作 させる <strong>Web</strong>AP から <strong>log4j</strong> を 利 用したログ 出 力 を 行 いたい、アプリケーション 開 発 者 、SE を 対 象 としています。1.2. 表 記 について本 ガイドでは 以 下 の 環 境 変 数 を 用 います。なお、OS を 限 定 しない 限 り、セパレータは/(スラッシュ)を 利 用 します。${INSTALLROOT}:インストールディレクトリ${INSTANCEROOT}:ドメインルートディレクトリ${APGNAME}:アプリケーショングループ 名${PGNAME}:プロセスグループ 名${PID}:プロセス ID${WEBAPNAME}:<strong>Web</strong>AP 名2. <strong>Web</strong>OTX のクラスローダの 仕 組 み<strong>Web</strong>AP のログ 出 力 方 法 の 説 明 を 行 う 前 に、<strong>Web</strong>OTX のクラスローダについて 説 明 します。<strong>Web</strong>OTX のクラスローダの 仕 組 みを 理 解 しておくことで、 本 ガイドの 理 解 が 深 まると思 います。クラスローダには 階 層 があり、 上 位 のクラスローダでロードされたクラスから、 下 位 のクラスローダでロードされたクラスを 参 照 することはできません。 逆 に、 下 位 のクラスローダでロードされたクラスから、 上 位 のクラスローダでロードされたクラスを 参 照 することはできます。<strong>Web</strong>OTX のクラスローダがロードする 先 のパスは 以 下 のようになります。1


図 1. <strong>Web</strong>OTX のクラスローダの 階 層また、nec-web.xml の delegate の 設 定 により、ロードする 優 先 順 位 を 決 定 することができます。 同 じ 名 前 のライブラリがあると、 競 合 が 発 生 し、 優 先 順 位 の 高 いパスに 含 まれるのライブラリが 利 用 されます。ロードされるライブラリの 優 先 順 位 は delegate=true の 場 合は 以 下 のようになります。delegate の 設 定 は <strong>Web</strong>AP の WEB-INF/nec-web.xml で 設 定 します。図 2. delegate=true の 場 合 のロード 優 先 順 位また、delegate=false の 場 合 は 以 下 のような 優 先 順 位 になります。2


図 2. delegate=false の 場 合 のロード 優 先 順 位例 えば、${INSTALLDIR}/lib と WEB-INF/lib に 同 じライブラリがある 場 合 、delegate=trueの 場 合 は、${INSTALLDIR}/lib 側 のライブラリがロードされ、delegate=false の 場 合 は、WEB-INF/lib が 優 先 してロードされます。3. <strong>Web</strong>AP から <strong>log4j</strong> 利 用 手 順本 章 では、<strong>Web</strong>OTX 上 で 動 作 させるアプリケーションから、<strong>log4j</strong> を 利 用 してログ 出 力 を行 う 手 順 について 説 明 します。<strong>Web</strong>OTXでは、<strong>V6.4</strong> からV<strong>6.5</strong>0.01 では、<strong>log4j</strong>のバージョンは 1.2.13、V<strong>6.5</strong>0.02 以 降 では 1.2.14 をバンドルしています。<strong>Web</strong>OTXがバンドルしている<strong>log4j</strong>でログ 出 力 を 行 う 場 合は、<strong>Web</strong>APに<strong>log4j</strong>を 含 める 必 要 はありません。バンドルしている<strong>log4j</strong>の 利 用 方 法 は 3.2 節「<strong>Web</strong>OTXが 提 供 する<strong>log4j</strong>を 利 用 する 場 合 」を 参 照 してください。 違 うバージョンの<strong>log4j</strong>を 利 用 する 場 合 は、 以 下 の 3.1 節 「<strong>Web</strong>APに<strong>log4j</strong>を 含 める 場 合 」を 参 照 してください。3.1. <strong>Web</strong>AP に <strong>log4j</strong> を 含 める 場 合<strong>Web</strong>OTX がバンドルしているバージョンと 違 う <strong>log4j</strong> を 利 用 する 場 合 は、war ファイルに <strong>log4j</strong> を 含 める 必 要 があります。また、<strong>Web</strong>AP で 利 用 するログ 定 義 ファイルは、WEB-INF/classes 直 下 に 配 置 してください。<strong>Web</strong>AP のログ 出 力 を 行 うには 以 下 の 手 順 を行 ってください。3


1. <strong>Web</strong>OTX に 設 定 されている <strong>log4j</strong>.configuration の 削 除<strong>Web</strong>OTX で 設 定 されている <strong>log4j</strong>.configuration 定 義 を 削 除 します。Windows 環 境では 以 下 のコマンドを 実 行 してください。otxadminotxadmin > login --user admin --password adminadmin --port 6212 --hostlocalhostotxadmin > delete-jvm-options-D<strong>log4j</strong>.configuration=file¥¥:///${com.nec.webotx.instanceRoot}${file.separator}config${file.separator}<strong>log4j</strong>.xmlUNIX 環 境 では、login コマンド 後 に 以 下 を 実 行 してください。otxadmin > delete-jvm-options-D<strong>log4j</strong>.configuration=file¥¥://${com.nec.webotx.instanceRoot}${file.separator}config${file.separator}<strong>log4j</strong>.xml上 記 コマンドのユーザ 名 、パスワード、ポート 番 号 、ホスト 名 は 環 境 にあわせてください。コマンドは 1 行 で 実 行 してください。2. war ファイルの 配 備war ファイルを <strong>Web</strong>OTX に 配 備 してください。3. nec-web.xml の 確 認war ファイルを 配 備 すると、nec-web.xml が 自 動 作 成 されます。nec-web.xml は以 下 にあります。${INSTANCEROOT}/applications/j2ee-modules/${WEBAPNAME}/WEB-INF/nec-web.xmlnec-web.xml で delegate=false となっていることを 確 認 してください。Servlet 2.4仕 様 の <strong>Web</strong>AP を 配 備 した 場 合 は delegate=true となっているので、true の 場 合 は、nec-web.xml を 以 下 のように 変 更 します。変 更 後 、 配 備 前 の <strong>Web</strong>AP の WEB-INF 以 下 に nec-web.xml をコピーし、war ファイルを 再 作 成 してください。4. war ファイルの 再 配 備3 で war ファイルを 再 作 成 した 場 合 は、<strong>Web</strong>OTX に 再 配 備 してください。5. ドメインの 再 起 動設 定 変 更 を 有 効 にするために、ドメインを 再 起 動 してください。4


V<strong>6.5</strong>0.02 パッチ 適 用 済 み 環 境 ではドメインを 停 止 し、 以 下 も 実 行 してください。6. <strong>log4j</strong>.jar の 削 除V<strong>6.5</strong>0.02 パッチを 適 用 済 み 環 境 では、 上 記 に 手 順 に 加 えて${INSTALLDIR}/lib/<strong>log4j</strong>.jar を 削 除 してください。V<strong>6.5</strong>0.02 より 前 の 環 境 では、<strong>log4j</strong>.jar を 削 除 する 必 要 はありません。 削 除 した 場 合 、<strong>Web</strong> コンテナが 起 動 しなくなります。なお、V<strong>6.5</strong>0.02 以 降 の 標 準 修 正 パッチを 適 用 すると、${INSTALLDIR}/lib/<strong>log4j</strong>.jar が 再 度 配 置 されます。 忘 れずに 削 除 してください。注 意 事 項• <strong>Web</strong>APに<strong>log4j</strong>を 含 んでいる 場 合 、 複 数 の<strong>Web</strong>APからNTEventLogAppednderを 利用 することはできません( 単 一 の<strong>Web</strong>APからの 利 用 ならば 可 能 )。 詳 しくは、3.5 節「NTEventLogAppenderを 利 用 する 場 合 」を 参 照 してください。3.2. <strong>Web</strong>OTX が 提 供 する <strong>log4j</strong> を 利 用 する 場 合war ファイルに <strong>log4j</strong> を 含 めず、${INSTALLDIR}/lib/<strong>log4j</strong>.jar を 利 用 する 方 法 について説 明 します。<strong>Web</strong>AP で 利 用 する 定 義 は、${INSTANCEROOT}/config/<strong>log4j</strong>.xml に 追 記 してください。このとき、<strong>log4j</strong>.xml にデフォルトで 定 義 されている 内 容 は 削 除 しないようにしてください。注 意 事 項• V<strong>6.5</strong>0.01 以 前 の 環 境 で、<strong>Web</strong>APに 含 めた 独 自 に 作 成 したAppenderクラスを 利 用する 場 合 は、warファイルに<strong>log4j</strong>を 含 めてください。 手 順 については 3.1 節 「<strong>Web</strong>APに<strong>log4j</strong>を 含 める 場 合 」を 参 照 してください。なお、V<strong>6.5</strong>0.02 以 降 の 環 境 では 問 題 ありません。3.3. マルチプロセスモードで <strong>Web</strong>AP のログ 出 力 を 行 う 場 合V<strong>6.5</strong> Standard または Enterprise Edition をマルチプロセスモードで 実 行 する 場 合 の<strong>Web</strong>AP のログ 出 力 の 手 順 について 説 明 します。 手 順 について 説 明 する 前 に、プロセスグループ 上 で 動 かす <strong>Web</strong>AP で 使 用 する Appender について 説 明 します。• 使 用 する Appender についてマルチプロセスモードで 実 行 する 場 合 、<strong>Web</strong>AP はプロセスグループ 上 で 動 作 します。プロセスグループは、 多 重 度 を 設 定 することができるため、ファイルにログ出 力 を 行 う 場 合 、 複 数 のプロセスが 同 じファイルに 書 き 込 みを 行 ってしまいます。5


そのため、ログの 解 析 を 行 うことが 困 難 になってしまう 場 合 があります。それを回 避 するために、プロセスグループ 上 のアプリケーションでは、ログ 出 力 に 標 準出 力 (stdout)を 使 用 しなければなりません。プロセスグループ 上 のアプリケーションで 標 準 出 力 を 行 うと、プロセスグループのログに 出 力 されます。ログは 以 下 のファイルに 出 力 されます。${INSTANCEROOT}/logs/tpsystem/${APGNAME}/${PGNAME}/${PGNAME}.${PID}.logログ 出 力 の 手 順 について 説 明 します。1. <strong>log4j</strong>.configuration の 設 定<strong>log4j</strong> のシステムプロパティ <strong>log4j</strong>.configuration をプロセスグループの JavaVM オプションに 追 加 してください。 以 下 のコマンドを 実 行 してください。ただし、プロセスグループには、<strong>log4j</strong>.configuration の 値 にデフォルトで${INSTANCEROOT}/config/tpsystem/logconf/${APGNAME}-${PGNAME}/<strong>log4j</strong>.xml が 設 定 してあります。この 設 定 ファイルに 定 義 を 追 加 する 場 合 は、 以 下 のコマンドを 実 行 する 必 要 はありません。otxadminotxadmin > login --user admin --password adminadmin --port 6212 --hostlocalhostotxadmin > settpsystem.applicationGroups..processGroups..otherArguments="-D<strong>log4j</strong>.configuration=file¥¥:///${com.nec.webotx.instanceRoot}${file.separator}config${file.separator}UNIX 環 境 では、login コマンド 後 に 以 下 を 実 行 してください。otxadmin > settpsystem.applicationGroups..processGroups..otherArguments="-D<strong>log4j</strong>.configuration=file¥¥://${com.nec.webotx.instanceRoot}${file.separator}config${file.separator}上 記 コマンドのユーザ 名 、パスワード、ポート 番 号 、ホスト 名 、<strong>log4j</strong>.configurationのパスは 実 際 の 環 境 に 合 わせて 変 更 してください。2. war ファイルの 配 備war ファイルをプロセスグループに 配 備 してください。6


3. プロセスグループの 再 起 動ログ 定 義 ファイルを 有 効 にするために、プロセスグループを 再 起 動 してください。注 意 事 項• ログ 定 義 ファイルについてプロセスグループ 上 で <strong>Web</strong>AP を 動 作 させる 場 合 、<strong>Web</strong>AP が 利 用 するログ 定 義 ファイルを AP ごとに 分 けて 利 用 することはできません。AP で 利 用 するログ 定 義 は<strong>log4j</strong>.configuration で 指 定 したファイルにすべて 記 述 してください。3.4. <strong>Web</strong>AP のログ 出 力 に commons-logging 経 由 で <strong>log4j</strong> を 使 用する 場 合V<strong>6.5</strong>0.01 以 前 では、<strong>Web</strong>APにcommons-loggingを 含 めると、<strong>Web</strong>OTX 側 で 提 供 しているcommons-loggingとの 競 合 が 発 生 します。この 問 題 を 解 決 するには、nec-web.xmlでdelegate=trueにする、または<strong>Web</strong>APからcommons-loggingと<strong>log4j</strong>を 取 り 除 き、<strong>Web</strong>OTXがバンドルしている<strong>log4j</strong>とcommons-loggingを 利 用 してください。commons-loggingは${INSTALLROOT}/lib/commons-pack.jarに 含 まれています。<strong>Web</strong>OTXがバンドルしている<strong>log4j</strong>を 利 用 したログ 出 力 方 法 は、3.2 節 「<strong>Web</strong>OTXが 提 供 する<strong>log4j</strong>を 利 用 する 場 合 」を 参照 してください。なお、 上 記 の 問 題 は V<strong>6.5</strong>0.02 以 降 の 環 境 では 発 生 しません。3.5. NTEventLogAppender を 利 用 する 場 合Windows 環 境 において、NTEventLogAppender を 利 用 する 場 合 の 注 意 点 について 説 明し ま す 。 NTEventLogAppender を 使 用 す る に は 、 <strong>log4j</strong> が 提 供 す るNTEventLogAppender.dll を 利 用 します。 同 一 プロセス 内 において、dll を 複 数 のクラスローダから 同 時 にロードしようとすると、 以 下 のエラーが 発 生 します。java.lang.UnsatisfiedLinkError: Native Library already loaded in anotherclassloader複 数 の<strong>Web</strong>APからNTEventLogAppenderを 利 用 する 場 合 は、<strong>Web</strong>OTXが 提 供 している<strong>log4j</strong>を 利 用 する 必 要 があります。<strong>Web</strong>OTXが 提 供 している<strong>log4j</strong>の 利 用 方 法 については、3.2節 「<strong>Web</strong>OTX が 提 供 する<strong>log4j</strong> を 利 用 する 場 合 」を 参 照 してください。ただし、NTEventLogAppenderを 利 用 する<strong>Web</strong>APが 1 つの 場 合 は、<strong>Web</strong>APに 含 めた<strong>log4j</strong>から 利 用7


することができます。4. おわりに<strong>Web</strong>OTX V6 上 で、<strong>Web</strong>AP から <strong>log4j</strong> を 利 用 する 方 法 に 関 して、 現 在 も <strong>Web</strong>OTX サポート 部 門 に 問 い 合 わせの 中 からよくある 質 問 と、その 解 決 方 法 について 説 明 しました。本 ガイドは、ログ 出 力 に 関 するトラブル 解 決 のために、<strong>Web</strong>OTX サポート 部 門 への 問 い合 わせによる 時 間 的 ロスを 発 生 させないように 作 成 したものです。 本 ガイドによって、 少しでもお 客 様 が 効 率 的 に 作 業 を 進 めることができたならば 幸 いです。8

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!