Confluence開発でログを使う
開発環境だと、System.out.println()でコンソールに吐き出したりIDEのデバッガを使う方法でも良いけど、本番環境で問題が出た場合にはロガーを使うしかない。
ログの吐き出される場所
log4j
Confluenceのデフォルトで入っていて使えるlogger。
ドキュメントはこちら。Working with Confluence Logs - Confluence Latest - Atlassian Documentation
設定ファイル
以下の場所にある。
WEB-INF/classes/log4j.properties
*2
ログレベルの変更などができる。ログレベルは、log4j Logging Levels - Confluence Latest - Atlassian Documentation によると、DEBUG/INFO/WARN/ERROR/FATAL の5つのログレベルがあって、
SDK | log4j.rootLogger=WARN, consolelog, errorlog, events, testAppender |
---|---|
本番 | log4j.rootLogger=WARN, confluencelog, errorlog |
となっている。
SDKはconsolelogとなっているので、atlas-runさせたコンソールにログが測れる。
このconsolelogとなっているのをconfluencelogにすると、ファイルに出力される。その際、その下らへんにある
log4j.appender.confluencelog=com.atlassian.confluence.logging.ConfluenceHomeLogAppender
log4j.appender.confluencelog.Threshold=DEBUG
log4j.appender.confluencelog.MaxFileSize=20480KB
log4j.appender.confluencelog.MaxBackupIndex=5
log4j.appender.confluencelog.layout=com.atlassian.confluence.util.PatternLayoutWithContext
log4j.appender.confluencelog.layout.ConversionPattern=%d %p [%t] [%c{4}] %M %m%n
のコメントアウトを外しておくのを忘れずに。
設定ファイルの詳細は、http://logging.apache.org/log4j/1.2/manual.html にある。
出力ログファイル
SDK | target/confluence/home/logs/atlassian-confluence.log |
---|---|
本番 | CONFLUENCE_DITA_DIRECTORY/logs/atlassian-confluence.log |
使い方
Javaファイルでは、
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public samplefunc() { Logger logger = LoggerFactory.getLogger(this.getClass()); logger.debug("log message"); logger.info("log message"); logger.warn("log message"); logger.error("log message"); }
という感じである。
SDKも本番もログレベルがWARNになっているので、上記の場合は3行目と4行目しか出力されない。
ただし、これログレベルを「DEBUG」にするとコンソールが流れっぱなしになるので、WARNにしたまま、log.warn()で出していく方が良いかも。