13
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Apexログ出力制御について

Last updated at Posted at 2019-03-06

1.ログ出力イメージ(debug)

image.png

2.ログ出力イメージ(info)

image.png

3.ログ出力イメージ(warn)

image.png

4.ログ出力イメージ(error)

image.png

5.カスタムメタデータ型(定義)

image.png
image.png

6.Logger


/**
 * ログレベルに従ってログ出力をするクラスです。
 * System.LoggingLevel:name,ordinal
 *   NONE:NONE,0
 *   ERROR:ERROR,8
 *   WARN:WARN,7
 *   INFO:INFO,6
 *   DEBUG:DEBUG,5
 *   FINE:FINE,4
 *   FINER:FINER,3
 *   FINEST:FINEST,2
 */
public class Logger {
    // ログレベルの設定値
    private static String logLevelSettingName = '';
    
    // 列挙値のリスト内の項目の位置
    private static Integer logLevelSettingOrdinal = 0;
    
    // 静的初期化コード(静的な変数初期化処理)
	static {
		// ログレベルの名前と値(数値)のマップ
        Map<String, Integer> logginglevelMap = new Map<String, Integer>();
		logginglevelMap.put(Logginglevel.NONE.name().toUpperCase(), Logginglevel.NONE.ordinal());
		logginglevelMap.put(Logginglevel.ERROR.name().toUpperCase(), Logginglevel.ERROR.ordinal());
		logginglevelMap.put(Logginglevel.WARN.name().toUpperCase(), Logginglevel.WARN.ordinal());
		logginglevelMap.put(Logginglevel.INFO.name().toUpperCase(), Logginglevel.INFO.ordinal());
		logginglevelMap.put(Logginglevel.DEBUG.name().toUpperCase(), Logginglevel.DEBUG.ordinal());
		logginglevelMap.put(Logginglevel.FINE.name().toUpperCase(), Logginglevel.FINE.ordinal());
		logginglevelMap.put(Logginglevel.FINER.name().toUpperCase(), Logginglevel.FINER.ordinal());
		logginglevelMap.put(Logginglevel.FINEST.name().toUpperCase(), Logginglevel.FINEST.ordinal());

		List<EnvironmentSetting__mdt> environmentSettingList = [select Value__c from EnvironmentSetting__mdt where DeveloperName = 'Logginglevel'];
		if (environmentSettingList.size() > 0) {
			// ログレベルの設定値を取得する
			logLevelSettingName = environmentSettingList.get(0).Value__c;
            if (!String.isBlank(logLevelSettingName)) {
                logLevelSettingName = logLevelSettingName.toUpperCase();
            }
            
			// ログレベルの設定値に従って列挙値のリスト内の項目の位置を取得する
            if (logginglevelMap.containsKey(logLevelSettingName)) {
                logLevelSettingOrdinal = logginglevelMap.get(logLevelSettingName);
            }
		}
	}

	/**
	 * エラーログを出力します。<br />
	 * 設定ログレベルが ERROR/WARN/INFO/DEBUG の場合に出力されます。
	 * 
	 * @param message メッセージ
	 */
	public static void error(String message) {
		error(message, null);
	}
	
	/**
	 * エラーログを出力します。<br />
	 * ログレベルが ERROR/WARN/INFO/DEBUG の場合に出力されます。
	 * 
	 * @param message メッセージ(パラメータを含む場合は順番に {0} {1}... で指定)
	 * @param params メッセージ内のパラメータの値
	 */
	public static void error(String message, List<String> params) {
		outputLog(Logginglevel.ERROR, message, params );
	}
	
	/**
	 * 警告ログを出力します。<br />
	 * 設定ログレベルが WARN/INFO/DEBUG の場合に出力されます。
	 * 
	 * @param message メッセージ
	 */
	public static void warn(String message) {
		warn(message, null);
	}
	
	/**
	 * 警告ログを出力します。<br />
	 * 設定ログレベルが WARN/INFO/DEBUG の場合に出力されます。
	 * 
	 * @param message メッセージ(パラメータを含む場合は順番に {0} {1}... で指定)
	 */
	public static void warn(String message, List<String> params) {
		outputLog(Logginglevel.WARN, message, params);
	}
	
	/**
	 * 情報ログを出力します。<br />
	 * ログレベルが INFO/DEBUG の場合に出力されます。
	 * 
	 * @param message メッセージ
	 */
	public static void info(String message) {
		info(message, null);
	}
	
	/**
	 * 情報ログを出力します。<br />
	 * ログレベルが INFO/DEBUG の場合に出力されます。
	 * 
	 * @param message メッセージ(パラメータを含む場合は順番に {0} {1}... で指定)
	 * @param params メッセージ内のパラメータの値
	 */
	public static void info(String message, List<String> params) {
		outputLog(Logginglevel.INFO, message, params);
	}
	
	/**
	 * デバッグログを出力します。<br />
	 * ログレベルが DEBUG の場合に出力されます。
	 * 
	 * @param message メッセージ
	 */
	public static void debug(String message) {
		debug(message, null);
	}
	
	/**
	 * デバッグログを出力します。<br />
	 * ログレベルが DEBUG の場合に出力されます。
	 * 
	 * @param message メッセージ(パラメータを含む場合は順番に {0} {1}... で指定)
	 * @param params メッセージ内のパラメータの値
	 */
	public static void debug(String message, List<String> params) {
		outputLog(Logginglevel.DEBUG, message, params);
	}

	/**
	 * 指定のログレベルのログを出力します。<br />
	 * 
	 * @param outputLogLevel 出力ログラベル
	 * @param message メッセージ(パラメータを含む場合は順番に {0} {1}... で指定)
	 * @param params メッセージ内のパラメータの値
	 */
	private static void outputLog(Logginglevel outputLogLevel, String message, List<String> params) {
		if (logLevelSettingOrdinal == 0 || logLevelSettingOrdinal > outputLogLevel.ordinal()) {
			return;
		}
		
		if (params != null) {
			message = String.format(message, params);
		}
		
		System.debug(outputLogLevel, message);
	}
}
13
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?