3日坊主アプリ開発 208日目


    ∩∩
   (´・ω・)
   _| ⊃/(___
 / └-(____/
  ̄ ̄ ̄ ̄ ̄ ̄ ̄

  • 本日の作業

ロギングクラスの作成

 

スタックトレースやクラス名/メソッド名/エラー発生行番号を記録してくれるロギングクラスを作っていました。

package servlet;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Logging {

  static void out(Exception e) {
    Date date = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat(“yyyy/MM/dd HH:mm:ss”);

    System.out.println(“— ” + sdf.format(date) + ” —“);
    e.printStackTrace();
    System.out.println(“— ” + sdf.format(date) + ” —“);
  }

  static void out(String msg) {
    Date date = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat(“yyyy/MM/dd HH:mm:ss”);
    StackTraceElement throwableStackTraceElement = new Throwable().getStackTrace()[1];

    System.out.println(“— ” + sdf.format(date) + ” —“);
    System.out.println(msg + “at ” + throwableStackTraceElement.getClassName() + “#” + throwableStackTraceElement.getMethodName() + “(” + throwableStackTraceElement.getLineNumber() + “)”);
    System.out.println(“— ” + sdf.format(date) + ” —“);
  }
}

outメソッドに例外を渡すと、

— 2016/07/19 23:29:41 —
java.sql.SQLException: Field ‘prize_panels’ doesn’t have a default value
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:963)
〜略〜
at servlet.DBManager.queryExec(DBManager.java:96)
at servlet.DBManager.queryExec(DBManager.java:79)
at servlet.Login.doGet(Login.java:38)
〜略〜
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
— 2016/07/19 23:29:41 —

のように、日時とスタックトレースを出力します。

outメソッドに文字(エラーが発生しましたよ)を渡すと

— 2016/07/19 23:29:41 —
エラーが発生しましたよ at servlet.DBManager#getConn(13)
— 2016/07/19 23:29:41 —

のように、日時と発生クラス名/メソッド名/行番号を出力します。

メソッドの中身を書き換えて”コンパイル”すれば、120%自由自在にカスタマイズできます。

シンプル!簡単!分かり易い!

え?commons-loggingとかlog4jとかslf4j-apiとかjcl-over-slf4jとかlogback-classicとか使え?

“設定”覚えるのがめんどいんで結構です。

  • 明日の予定

サーバにログインする処理を実装する。サーバに各ユーザの識別ID※とユーザ名を格納する。

※appleの推奨するidentifierForVendor(IDFV)を識別IDとして使います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です