Log4jのPatternLayoutの%cと%C

Log4jのPatternLayoutで指定できる記号の%cと%Cですが、、

%c ログイベントのカテゴリ名
%C ロギング要求を行うクラス名

で、Loggerを生成する際のカテゴリ名はクラス名を使って下記のような感じに書く事が多いので、

import org.apache.log4j.Logger;

public class HogeHoge {
    /** Logger */
    private static final Logger logger = Logger.getLogger(HogeHoge.class);

%cと%Cが結果的に同じ内容になります。
が、%cと%Cでは実行速度が違ってくるので注意が必要です。(%Cだとスタック辿ることになるので遅いらしい)

Log4jJavaDocでも、注意点として書いてあります。

WARNING Generating the caller class information is slow. Thus, it's use should be avoided unless execution speed is not an issue.

大文字と小文字の違いだけなので、つい間違えがちです…