본문 바로가기
Tool & Setting

[Tool] [Kotlin] logger로 로그 찍는 꿀팁! + Grep Console 플러그인

by 카프리썬 2022. 2. 4.
728x90

기존 프로젝트를 이해하려면 테스트코드를 작성하는게 맞지만, 일단은 로깅 찍어서 전체적인 플로우를 보려고 했다.

그래서 로그를 찍는 방법을 찾아본 내용을 정리한다. 추가로, intellj에서 필터링해서 볼수있는 플로그인까지 소개한다. 

 

반응형

 

Kotiln logger

java에서는 lombok을 사용해서 클래스변수의 getter/setter를 자동으로 생성해주는 @Data어노테이션이나, 

logger객체를 자동으로 생성해주는 @Log, @Slf4j가 있다. 

하지만 kotlin에서는 이렇게 logger객체를 쉽게 얻어주는 라이브러리가 없다. 

그래서 코틀린코딩으로 간단하게 logger객체를 얻을 수 있는 방법을 알아보자 

 

kotiln-logging dependency추가

logger객체를 얻기 위해서 디팬던시 추가가 필요하다 

maven 프로젝트라면

<dependency>
    <groupId>io.github.microutils</groupId>
    <artifactId>kotlin-logging-jvm</artifactId>
    <version>2.0.11</version>
</dependency>

gradle 프로젝트라면

  implementation("io.github.microutils:kotlin-logging:1.12.0")

 

logger 사용법

우선 logger를 사용하기 위해 import 한다.

import mu.KotlinLogging

그리고 logger를 최상위변수로 선언한다.

private val logger = KotlinLogging.logger {}

그리고 원하는 곳에서 logger를 출력한다. 

출력결과

그리고 프로젝트를 run 하게 되면 아래와 같이 출력결과를 볼 수 있다. 

하지만 이렇게 된 로그는 쉽게 살펴보기 어렵다. 로그의 늪에 빠진다.

그래서 Intellj에서 로그를 한눈에 보기 쉽게 제공해주는 플러그인이 있다.

 

728x90

Grep Console

preference(CMD+,) 메뉴로 들어가 plugins에서 grep console를 추가한다.

 

이 플러그인은 콘솔창 텍스트 컬러를 커스텀으로 지정할 수 있다. 

error, warn, info, debug 뿐만 아니라 개인이 원하는 글자 expression을 넣을 수도 있다. (add new item)

그리고 원하는 내용만 필터링해서 볼 수 있다. 

필터링 원하는 곳에 우클릭으로 grep을 하고, expression을 지정해서 reload하면 원하는 내용만 필터링해서 볼 수 있다.

필터링해서 지정하는 expression은 정규표현식을 따르며 *이나 !로 제외하거나 모두 포함하는 단어를 검색 할 수도 있다.  

 

 

일단 여기까지 알아본 걸로 기본적으로 로그를 찍어볼 수 있을 것 같다. 다음에 테스트코드 작성해보자

테스트코드작성

https://codechacha.com/ko/unittest-with-kotlintest-in-kotlin/

https://github.com/spring-guides/tut-spring-boot-kotlin#testing-with-junit-5

 

참고

https://hyoj.github.io/blog/tips/intellij/intellij-plugins/#key-promoter-x

 

IntelliJ 추천 플러그인 | Hyoj blog

IntelliJ 추천 플러그인 ☺️ 그 좋은 IJ 에 플러그인까지 곁들이면 금상첨화 ! IntelliJ 를 시작했다면, 아래 플러그인들을 사용해보세요. CodeGlance CodeGlance editor Sublime 처럼 코드 미니맵을 에디터 창

hyoj.github.io

https://www.baeldung.com/kotlin/kotlin-logging-library

 

반응형

$(document).ready(function() { var $toc = $("#toc"); $toc.toc({content: ".tt_article_useless_p_margin", headings: "h2,h3,h4"}); });