優雅にログを残しましょう

1776 ワード

プレースホルダの使用



placeholderを使用する場合、loggerレベルでは文字列演算は自動的に実行されません
効率が高く、空白が明らかな誤りをよく見つけることができます.

logger.info("Old weight is {}. new weight is {}.", oldWeight, newWeight);
{}は2つですが、パラメータで4つ(accountId、channelId、name、age)、例外(e)を与えると、残りのパラメータ(name、age)は無視されます.また,パラメータが不足している場合はメッセージを位置決めするのではなく,{}に従って記録する.
error(String msg,Throwable t)のようにthrowableを投げ出す方法がある.この方法では、デバッグ時に便利な例外stacktraceを一緒に保持できます.error(String format,Object...arguments)のような方法を書くと、最後にthrowableが渡されます.

文字列を使用してスタックトラッキングを抽出する方法

catch (Exception e2) {
                log.info("clientSocket connected refused!!!");

                log.info("Exception" + Common.getPrintStackTrace(e2));

                //e2.printStackTrace();
            }
    public static String getPrintStackTrace(Exception e) {

        StringWriter errors = new StringWriter();
        e.printStackTrace(new PrintWriter(errors));

        return errors.toString();

    }

リファレンス


https://www.youtube.com/watch?v=HxzlJWMcHng
https://www.tutorialspoint.com/slf4j/slf4j_parameterized_logging.htm
https://blog.leocat.kr/notes/2018/12/30/logger-last-throwable-param-on-logging-formatted-message