cfscript でコードを書いていると、ログ出したいなぁという時があるけど、cflog タグは当然使えない。
まあ、ログじゃなくても、いろんな方法があるわけだけど、ささっと変数状態を見たいときがある。
というわけで、やってみた。
<cfscript>
variables.LoggerClass = CreateObject("java", "org.apache.log4j.Logger");
variables.logger = variables.LoggerClass.getLogger("cflog4jlogger");
variables.appender = variables.logger.getAppender("custom");
if (!IsDefined("variables.appender")) {
// PatternLayout
variables.layout = CreateObject("java", "org.apache.log4j.PatternLayout");
variables.layout.setConversionPattern("""%-5p"",""%t"",%d{""MMM/dd/yy"",""HH:mm:ss""},""#Application.ApplicationName#"",""%m""%n");
// Appenderインスタンスの生成
variables.appender = CreateObject("java", "org.apache.log4j.RollingFileAppender");
variables.appender.setName("custom");
variables.appender.setFile("#server.coldfusion.rootdir#/logs/log4jlog.log");
variables.appender.setLayout(variables.layout);
variables.logger.addAppender(variables.appender);
variables.appender.activateOptions();
}
variables.file = variables.appender.getFile();
variables.LevelClass = CreateObject("java", "org.apache.log4j.Level");
variables.logger.setLevel(LevelClass.INFO);
</cfscript>
<cfscript>
...
logger.error("書き出す内容");
...
</cfscript>
という感じで、できた。
無駄もあるかもしれないし、間違っているかもしれないけど、とりあえずは、はき出せる。
ColdFusion の lib フォルダにある logger.xml に書けば、行けそうな気がしないわけでもない。