ということで、Log4Jを使おうと思ってlog4j.jarをクラスパスに含めたら、今までおとなしかったライブラリがモノを言い始めた。
まずはBeanUtils。でも、これはloggerがねぇよ!って言ってるだけだったので、log4j.properties的なファイルにこんなのを追加すればよろしい。
log4j.appender.null = org.apache.log4j.varia.NullAppender
log4j.logger.org.apache.commons.beanutils.BeanUtils=INFO, null
問題はVelocityで、これはログファイルを作ってくれやがるので、邪魔。いちライブラリの分際で勝手にファイル作るなと。しかも、デフォルトでログレベルFINEってどうよ。
で、なんかググってみつける情報は古くてVelocityEngineとか使ってあるし、typoでハマったりするし、さんざん。
とりあえず、Velocityのログ出力を殺すならこれ。
Velocity.addProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS,
NullLogChute.class.getName());
自前のlog4j.properties的ファイルで設定できるようにするならこれ。
Velocity.addProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS,
Log4JLogChute.class.getName());
Velocity.addProperty(Log4JLogChute.RUNTIME_LOG_LOG4J_LOGGER, "velocity");
そうするとlog4j.properties的なファイルにこんな感じで書けばいいようになる。
log4j.appender.null = org.apache.log4j.varia.NullAppender
log4j.logger.velocity=INFO, null