∩∩
(´・ω・)
_| ⊃/(___
/ └-(____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
- 本日の作業
ロギングクラスの作成
スタックトレースやクラス名/メソッド名/エラー発生行番号を記録してくれるロギングクラスを作っていました。
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として使います。