Velocityのログについて

velocityのデフォルトではAvalonLogChute, Log4JLogChute, CommonsLogLogChute, ServletLogChute, JdkLogChuteの順にクラスを探していき見つかったログを使います。

ログを出力しないようにする

デフォルトでは、velocity.logをカレントフォルダーに書き出そうとします。
ログを出力しないようにするには以下のようなプロパティーを指定します。これでVelocityのログは無効になります。
Velocity.setProperty(VelocityEngine.RUNTIME_LOG_LOGSYSTEM_CLASS, "org.apache.velocity.runtime.log.NullLogSystem");

ただし、ロガーの設定によっては書き出されないこともあります。
例えば、log4jの場合、このような記述があれば、ここで処理されるのか、ファイルには出力されません。
log4j.rootLogger=INFO,A1


log4jのコンソールにログを出力するようにする

Logger名を指定して
Velocity.addProperty(Log4JLogChute.RUNTIME_LOG_LOG4J_LOGGER, "velocity");

log4jのプロパティーファイルにvelocityのloggerを指定することでコンソールに出力できるようになります。
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.logger.velocity=FINE,A1


ファイルの保存先を指定する

何かの事情でvelocity.logファイルが作成出来ない時は、以下のようなエラーが出ます。
java.io.FileNotFoundException: velocity.log (アクセスが拒否されました。) java.io.FileOutputStream.openAppend(Native Method) java.io.FileOutputStream.<init>(FileOutputStream.java:177) java.io.FileOutputStream.<init>(FileOutputStream.java:102) org.apache.log4j.FileAppender.setFile(FileAppender.java:272) org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:156) org.apache.log4j.FileAppender.<init>(FileAppender.java:96) org.apache.log4j.RollingFileAppender.<init>(RollingFileAppender.java:60) org.apache.velocity.runtime.log.Log4JLogChute.initAppender(Log4JLogChute.java:118) org.apache.velocity.runtime.log.Log4JLogChute.init(Log4JLogChute.java:85) org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:157) org.apache.velocity.runtime.log.LogManager.updateLog(LogManager.java:255) org.apache.velocity.runtime.RuntimeInstance.initializeLog(RuntimeInstance.java:795) org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:250) org.apache.velocity.runtime.RuntimeSingleton.init(RuntimeSingleton.java:114) org.apache.velocity.app.Velocity.init(Velocity.java:79)

その場合、ファイルの保存先を絶対パスで指定するとうまくいきます。
Velocity.setProperty("runtime.log","c:\\tmp\\velocity.log");


ログの内容

こういうログが書き込まれます。

velocity.log

2009-12-28 17:38:47,090 - Log4JLogChute initialized using file 'c:\tmp\velocity.log'
2009-12-28 17:38:47,091 - The version of log4j being used does not support the "trace" level.
2009-12-28 17:38:47,091 - *******************************************************************
2009-12-28 17:38:47,091 - Starting Apache Velocity v1.6.3 (compiled: 2009-12-07 15:40:14)
2009-12-28 17:38:47,091 - RuntimeInstance initializing.
2009-12-28 17:38:47,091 - Default Properties File: org\apache\velocity\runtime\defaults\velocity.properties
2009-12-28 17:38:47,091 - Trying to use logger class org.apache.velocity.runtime.log.AvalonLogChute
2009-12-28 17:38:47,091 - Target log system for org.apache.velocity.runtime.log.AvalonLogChute is not available (java.lang.NoClassDefFoundError: org/apache/log/format/Formatter).  Falling back to next log system...
2009-12-28 17:38:47,091 - Trying to use logger class org.apache.velocity.runtime.log.Log4JLogChute
2009-12-28 17:38:47,091 - Using logger class org.apache.velocity.runtime.log.Log4JLogChute
2009-12-28 17:38:47,095 - Default ResourceManager initializing. (class org.apache.velocity.runtime.resource.ResourceManagerImpl)
2009-12-28 17:38:47,100 - ResourceLoader instantiated: org.apache.velocity.runtime.resource.loader.FileResourceLoader
2009-12-28 17:38:47,102 - FileResourceLoader : initialization starting.
2009-12-28 17:38:47,102 - Do unicode file recognition:  false
2009-12-28 17:38:47,102 - FileResourceLoader : adding path '.'
2009-12-28 17:38:47,102 - FileResourceLoader : initialization complete.
2009-12-28 17:38:47,119 - ResourceCache: initialized (class org.apache.velocity.runtime.resource.ResourceCacheImpl) with class java.util.Collections$SynchronizedMap cache map.
2009-12-28 17:38:47,119 - Default ResourceManager initialization complete.
2009-12-28 17:38:47,122 - Loaded System Directive: org.apache.velocity.runtime.directive.Define
2009-12-28 17:38:47,123 - Loaded System Directive: org.apache.velocity.runtime.directive.Break
2009-12-28 17:38:47,124 - Loaded System Directive: org.apache.velocity.runtime.directive.Evaluate
2009-12-28 17:38:47,125 - Loaded System Directive: org.apache.velocity.runtime.directive.Literal
2009-12-28 17:38:47,127 - Loaded System Directive: org.apache.velocity.runtime.directive.Macro
2009-12-28 17:38:47,129 - Loaded System Directive: org.apache.velocity.runtime.directive.Parse
2009-12-28 17:38:47,131 - Loaded System Directive: org.apache.velocity.runtime.directive.Include
2009-12-28 17:38:47,132 - Loaded System Directive: org.apache.velocity.runtime.directive.Foreach
2009-12-28 17:38:47,210 - Created '20' parsers.
2009-12-28 17:38:47,224 - Velocimacro : initialization starting.
2009-12-28 17:38:47,224 - Velocimacro : "velocimacro.library" is not set.  Trying default library: VM_global_library.vm
2009-12-28 17:38:47,224 - Velocimacro : Default library not found.
2009-12-28 17:38:47,224 - Velocimacro : allowInline = true : VMs can be defined inline in templates
2009-12-28 17:38:47,224 - Velocimacro : allowInlineToOverride = false : VMs defined inline may NOT replace previous VM definitions
2009-12-28 17:38:47,224 - Velocimacro : allowInlineLocal = false : VMs defined inline will be global in scope if allowed.
2009-12-28 17:38:47,225 - Velocimacro : autoload off : VM system will not automatically reload global library macros
2009-12-28 17:38:47,225 - Velocimacro : Velocimacro : initialization complete.
2009-12-28 17:38:47,225 - RuntimeInstance successfully initialized.


Comments