各環境に備わっている既定のログ出力機能を、以下にメモしておく。
ASP.NETでは、システム既定の簡易なログ出力機能が無いようだ。log4netやEnterprise Libraryを利用して独自に実装することになるか。
* Tomcat 5.5.25 + Java 1.6.0_01 + Windows XP Pro SP2 [#q84033ad]
** アクセスログ [#o2258211]
- 規定(Default)では、出力されない。
- %CATALINA_HOME%\conf\server.xml で、コメントアウトされている AccessLogValve か FastCommonAccessLogValve を有効にすると、localhost_access_log.yyyy-MM-dd.txt ファイルに出力される。
127.0.0.1 - - [09/Sep/2007:18:20:03 +0900] "GET /LogTest/LogDefaultServlet HTTP/1.1" 200 21
** アプリケーションで捕捉されなかった例外のログ出力 [#h7bf660a]
- localhost.yyyy-MM-dd.log ファイルに出力される。
2007/09/09 15:58:33 org.apache.catalina.core.StandardWrapperValve invoke
致命的: サーブレット LogDefaultServlet のServlet.service()が例外を投げました
javax.servlet.ServletException: Exception
at logtest.LogDefaultServlet.doGet(LogDefaultServlet.java:24)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
(以下略)
** アプリケーションログ [#m44da0a7]
*** System.out.println [#x8e8059b]
- ソースコード
System.out.println("System.out.println");
- ファイルに出力されない。
-- %CATALINA_HOME%\bin\startup.bat(startup.sh) を実行してサーバーを起動した場合、そのコンソールに出力される。
*** GenericServlet.log [#ab2daa7d]
- ソースコード
log("GenericServlet.log");
- localhost.yyyy-MM-dd.log ファイルに出力される。
2007/09/09 15:58:33 org.apache.catalina.core.ApplicationContext log
情報: LogDefaultServlet: GenericServlet.log
- ログレベルは指定不可。常にINFO。
*** java.util.logging.Logger (Java Logging API) [#s4a5e30c]
- ソースコード
Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).info("Logger.getLogger");
-- Java 1.4では以下のように記述できたが、 Java 1.6ではデッドロックが発生する可能性があるらしい。
Logger.global.info("Logger.global.info");
-- 通常は、Loggerオブジェクトに対する参照を、クラス内で使いまわす。
- catalina.yyyy-MM-dd.log ファイルに出力される。
2007/09/09 18:19:14 logtest.LogDefaultServlet doGet
情報: Logger.getLogger
*** [[org.apache.commons.logging.LogFactory:http://commons.apache.org/logging/]] [#fa46f3f6]
- Tomcat 5.5.25では、%CATALINA_HOME%\bin フォルダにcommons-logging-api.jarファイルが配置されている。
- ソースコード
LogFactory.getLog("LogDefaultServlet").info("LogFactory.getLog");
-- 通常は、Logオブジェクトに対する参照を、クラス内で使いまわす。
- catalina.yyyy-MM-dd.log ファイルに出力される。
2007/09/09 18:19:14 logtest.LogDefaultServlet doGet
情報: LogFactory.getLog
* ASP.NET 2.0 + IIS 5.1 + Windows XP Pro SP2 [#a25f168d]
** アクセスログ [#zab4852d]
- %SystemRoot%\system32\LogFiles\W3SVC1\ncyymm.log ファイルに出力される。
-- フォルダ指定は、IIS管理コンソール(MMC)で変更可能。
** アプリケーションで捕捉されなかった例外のログ出力 [#w67e5a14]
- ファイルに出力されない。
-- アプリケーション構成ファイルの設定により、Webブラウザのエラー画面上に出力される。
- Global.asaxで補足したり、IHTTPHandlerを追加したりして、独自に実装する必要があるようだ。
** アプリケーションログ [#k0544535]
*** Console.WriteLine [#ida6d90a]
- ソースコード
Console.WriteLine("Console.WriteLine");
- 出力されない。
*** Debug.WriteLine [#dcb035a7]
- ソースコード
Debug.WriteLine("Debug.WriteLine");
- Visual Studioで実行した場合のみデバッグ出力されるが、ファイルには出力されない。
*** Trace.Write [#mb84613e]
- ソースコード
Trace.Write("Trace.Write");
- ASP.NETのトレースログに出力される。Defaultではトレースログは無効。
-- ASP.NETでは、トレースログを簡易にファイル出力できないようだ。
*** EventLog.WriteEntry [#zd46294d]
- ソースコード
EventLog.WriteEntry("dotNET Sample App", "Sample Event", EventLogEntryType.Warning, 234);
EventLog.WriteEntry("eSource", "eEvent", EventLogEntryType.Warning, 234);
- イベントログへ書き込みはデフォルトでセキュリティ例外が発生する。
-- http://blogs.sqlpassj.org/matu_tak/archive/2004/06/25/2929.aspx
* PHP 5.2.4 + Apache 1.3.37 + Windows XP Pro SP2 [#v55ce2c7]
** アクセスログ [#odf76a7e]
- Apache HTTP Serverの access.log が利用できる。
** アプリケーションで捕捉されなかった例外のログ出力 [#z1d290a0]
- Apache HTTP Serverの error.log に出力される。
** アプリケーションログ [#o0ea1b88]
*** error_log [#y39eac1c]
- Apache HTTP Serverの error.log に出力される。
*** syslog [#p834b969]
- Windowsの場合は、イベントログに出力されるようだ。
*** apache_note [#sc15fa0a]
- アクセスログのレコードに記述を追加できる。