Dev/Java

[java] Logback 과 Maven

창문닦이 2019. 10. 4. 22:37

Log Level

  • TRACE : 가장 상세한 정보를 나타낼 때 사용한다.

  • DEBUG : 일반 정보를 상세히 나타낼 때 사용한다.

  • INFO : 일반 정보를 나타낼 때 사용한다.

  • WARN : 에러는 아니지만 주의할 필요가 있을 때 사용한다.

  • ERROR : 일반 에러가 일어 났을 때 사용한다.

  • FATAL : 가장 크리티컬한 에러가 일어 났을 때 사용한다. 

package org.slf4j;

public interface Logger {

 

  // Printing methods:

  public void trace(String message);

  public void debug(String message);

  public void info(String message);

  public void warn(String message);

  public void error(String message);

}

 

하위 레벨로 내려갈 수록 로그가 일반적으로 적게 찍힌다. TRACE 일때는 모든 로그가 다 찍히고 ERROR 일경우 ERROR만 출력된다. 출력하고 싶지 않을 경우에는 OFF로 설정하면 된다. 레벨이 5개인 것을 알고있었으나, 출력 레벨 설정시 이걸 몰라서 로그 찍을때 생성해두었는데 왜 안뜨나 했다.. 관련 document 확인을 생활화하자.

level of request p

effective level q

 

TRACE

DEBUG

INFO

WARN

ERROR

OFF

TRACE

YES

NO

NO

NO

NO

NO

DEBUG

YES

YES

NO

NO

NO

NO

INFO

YES

YES

YES

NO

NO

NO

WARN

YES

YES

YES

YES

NO

NO

ERROR

YES

YES

YES

YES

YES

NO


Appender 종류

  • ConsoleAppender : 콘솔에 로그를 찍는 방법

  • FileAppender : 파일에 로그를 찍는 방법

  • RollingFileAppender : 여러개의 파일을 순회하면서 로그를 찍는 방법

  • SMTPAppender : 로그를 메일에 찍어 보내는 방법

  • DBAppender : 데이터베이스에 로그를 찍는 방법

  • 기타 SocketAppender, SSLSocketAppender등이 있다

Logback

- 로그 담당. 자바에서 로깅을 위한 라이브러리. 스프링부트에서 기본으로 사용하고 있는 로깅 라이브러리.

- 다운로드 :  https://logback.qos.ch/

  •  slf4j-api.jar

  •  logback-core.jar

  •  logback-classic.jar

- Logback xml 설정

  • 환경설정 관련 doc : https://logback.qos.ch/manual/configuration.html

  •  logback.xml로 파일을 생성하면, 실행시 classpath의 root에 있으면 이 파일을 읽고 logback의 설정파일로 이용한다.

  •  appender의 name을 설정한 후 root태그 하위에 appender-ref 태그로 해당값을 통해 연결해 설정할 수 있다.

Maven

- 자바에서 빌드 담당

왜 메이븐을 쓰는가 ? 자동 빌드를 해준다. 그래서 자바 자체에서 컴파일 해본 경험이 없는 개발자가 다수 존재한다. 툴의 도움없이도 개발이 가능해야한다.

Notepad로 java class를 생성하 고 cmd를 통해 javac로 컴파일 해보자


- Jar 파일은 쉽게 생각하면 압축파일. 아카이빙이 목적이다.

아카이빙이란 파일 전송을 위해 백업용, 보관용, 기타 다른 목적으로 한곳에 모아둔 파일. 여러가지의 파일을 하나로 묶어서 관리하기 편하게끔 묶은 것.

클래스로 실행 : java -cp com.test.클래스명.

  • -cp는 classpath

 jar 파일로 바로 실행하고 싶은 경우

  •  jar -c -f jar파일명.jar com\* (jar가 묶인 폴더들)

Jar로 실행 :  java -cp 파일명.jar 패키지명.클래스명

별도의 라이브러리의 클래스패스를 추가하기

  • 컴파일

  • javac -cp lib\logback-classic.jar; lib\logback-core.jar;lib\slf4g-api.jar com\test\Main.java

  • 클래스 파일 실행

  •  java -cp lib\logback-classic.jar; lib\logback-core.jar;lib\slf4g-api.jar com.test.Main


- Manifest 파일

JAR, WAR 및 EAR 파일의 META-INF 폴더 아래에 MANIFEST.MF 파일이 있다

모든 항목은 key – value 쌍. 헤더의 이름은 값과 콜론 (:)으로 구분된다.

매니페스트는 아카이브에 패키지 된 다른 파일에 대한 정보도 포함 할 수 있다.

매니페스트에 기록되는 파일 정보는 JAR 파일의 용도에 따라 달라진다. 기본 매니페스트 파일은 다른 파일에 대해 어떤 정보를 기록해야하는지에 대한 가정을하지 않으므로 한 줄에는 자체에 대한 데이터 만 포함.

  • JAR 파일로 번들로 제공되는 응용 프로그램 : 응용 프로그램이 JAR 파일에 번들로 제공되는 경우 Java Virtual Machine은 응용 프로그램의 main class를 알려야합니다. 진입점은 public static void main (String [] args) 메서드가 있는 클래스. 

  • 진입점 다음과 같은 일반 형식을 가진 Main-Class 헤더에 작성한다. 

    • Main-Class: 패키지명.classname

  • 다운로드 확장은 다른 JAR 파일의 매니페스트 파일에서 참조하는 JAR 파일.

  • 애플릿, 응용 프로그램 또는 다른 확장의 매니페스트 파일에있는 Class-Path 헤더 필드에 지정됩니다. 클래스 – 경로 헤더는 다음과 같다.

    • Class-Path:  lib\logback-classic.jar lib\logback-core.jar lib\slf4g-api.jar

  • Jar -c -m manifest.txt -f test.jar com\* logback.xml

    • Jar 파일을 만들어라

    • Manifest 옵션은 추가.

    • 파일을 만들되 파일명은 test.jar

    • 클래스파일이 추가 경로 com\*

    • Jar의 root 경로에 logback.xml이 생성됨

Reference

https://m.blog.naver.com/PostView.nhn?blogId=moonv11&logNo=60179970474&proxyReferer=https%3A%2F%2Fwww.google.com%2F

https://logback.qos.ch/manual/architecture.html>

https://codeday.me/ko/qa/20190313/48753.html>



'Dev > Java' 카테고리의 다른 글

[effective-java] 일반적인 프로그래밍 원칙  (0) 2020.01.14
[java] CSV 파싱하기  (0) 2019.12.13
[java] JVM, JRE, JDK, 자바 메모리 구조  (0) 2019.09.28
[java] HttpClient  (1) 2019.09.26
[java] on-heap 과 off-heap  (0) 2019.09.20