반응형
프로그램이 복잡해질수록 로그의 중요성은 올라갑니다.
그리고 한줄 한줄 로그로는 사용자가 많은 프로그램에서는 추적하기가 정말 힘이듭니다.
그래서 만들어 봤습니다.
시작부터 끝까지 Depth를 타고 들어가서 한큐에 보기좋게 남겨주는 PrettyLog 입니다.
소스와 간단한 예제는 아래 코드를 참고하시면 됩니다.
저는 Spring AOP를 이용해서 Controller 부터 Dao 까지 모두 자동으로 로깅을 하고 있는데 디버깅이나 데이터 흐름을 파악하는데 정말 좋습니다.
(수행시간은 보너스)
유용하게 사용되었으면 좋겠습니다.
2018-08-30 07:35:09.555 INFO --- [ main] ELAPSED_TIME : Dao.selectCar,0 ms
2018-08-30 07:35:09.561 INFO --- [ main] ELAPSED_TIME : Service.getCar,11 ms
2018-08-30 07:35:09.562 INFO --- [ main] ELAPSED_TIME : Controller.getCarView,13 ms
2018-08-30 07:35:09.562 INFO --- [ main] ELAPSED_TIME : PrettyLogTest,17 ms
+---------------------------------------------------
|START : 2018-08-30 07:35:09,548
|ID : PrettyLogTest
| +---------------------------------------------------
| |START : 2018-08-30 07:35:09,549
| |ID : Controller.getCarView
| |PARAM : carNo:1004
| | +---------------------------------------------------
| | |START : 2018-08-30 07:35:09,550
| | |ID : Service.getCar
| | |PARAM : carNo:1004
| | | +---------------------------------------------------
| | | |START : 2018-08-30 07:35:09,551
| | | |ID : Dao.selectCar
| | | |PARAM : carNo:1004
| | | |RESULT : BoongBoong
| | | |ELAPSED : 0 ms
| | | +---------------------------------------------------
| | |RESULT : BoongBoong
| | |ELAPSED : 11 ms
| | +---------------------------------------------------
| |RESULT : BoongBoong
| |ELAPSED : 13 ms
| +---------------------------------------------------
|ELAPSED : 17 ms
+---------------------------------------------------
PrettyLogTest.java
public class PrettyLogTest {
public static void main(String[] args) {
PrettyLog prettyLog = new PrettyLog("PrettyLogTest");
Controller.getCarView("1004", prettyLog);
prettyLog.stop();
System.out.println(prettyLog.prettyPrint());
}
public static class Controller {
public static void getCarView(String carNo, PrettyLog prettyLog) {
prettyLog.start("Controller.getCarView");
prettyLog.append("PARAM", "carNo:" + carNo);
String carName = Service.getCar(carNo, prettyLog);
prettyLog.append("RESULT", carName);
prettyLog.stop();
}
}
public static class Service {
public static String getCar(String carNo, PrettyLog prettyLog) {
prettyLog.start("Service.getCar");
prettyLog.append("PARAM", "carNo:" + carNo);
String carName = Dao.selectCar(carNo, prettyLog);
prettyLog.append("RESULT", carName);
prettyLog.stop();
return carName;
}
}
public static class Dao {
public static String selectCar(String carNo, PrettyLog prettyLog) {
String carName = "BoongBoong";
prettyLog.start("Dao.selectCar");
prettyLog.append("PARAM", "carNo:" + carNo);
prettyLog.append("RESULT", carName);
prettyLog.stop();
return carName;
}
}
}
PrettyLog.java
반응형
'java' 카테고리의 다른 글
ThreadLocal Test (0) | 2018.10.30 |
---|---|
java - google otp (0) | 2018.10.19 |
spring boot logging.config (0) | 2018.09.10 |
restTemplate large file download stream (0) | 2018.09.03 |
java php aes ecb nopadding (2) | 2018.08.29 |
enum fasterxml jackson Serializing and DeSerializer (0) | 2018.08.24 |
[tomcat-jdbc] Found class org.apache.juli.logging.Log, but interface was expected (0) | 2018.08.24 |
Spring RestTemplate Request Parameter Encoding (0) | 2018.08.16 |