본문 바로가기

항해 시절

스프링 복습 및 Logback에 대해서 (항해 10주차 회고록)

728x90
728x90

(출처는 김영한 강사님 유튜브 : https://youtu.be/xs44Ty_Kerk )

스프링이란?

1. 스프링이라고 하면 뭘 뜻하지?

스프링이라는 단어는 문맥에 따라 다르게 해석된다

1). 스프링 DI 컨테이너 기술

2). 스프링 프레임 워크

->스프링 프레임 워크란? 스프링 DI컨테이너, AOP 등 핵심 기술과 스프링MVC 등과 같은 웹기술, ORM지원 같은 데이터 기술 등

여러 기술 등을 통 틀어 스프링 프레임워크라 한다.

3). 스프링 부트, 스프링 프레임 워크를 포함한 스프링 생태계

-> 스프링 부트란? 스프링 프레임워크 및 스프링 시큐리티 등 스프링 생태계를 편리하게 사용할 수 있게 해주는

기술임, Tomcat 같은 웹 서버를 내장하고 있음

-> 스프링 생태계에는 스프링 프레임워크, 스프링 부트, 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 Rest Docs, 스프링 배치,

스프링 클라우드 등이 있다.

2. 스프링 왜 만들었지?

중요한 것은 스프링을 왜 만들었는지를 알아야 한다.

웹 어플리케이션 만들고, DB 접근 편하게 해주는 기술인가?

전자정부 프레임워크인가?

이런 것들은 핵심이 아니다

핵심은 자바 언어의 프레임 워크로 (자바는 객체 지향언어) 좋은 객체 지향 애플리케이션을 개발할 수 있게

도와주는 프레임 워크이다.

3. 객체 지향 이란?

위에서 좋은 객체지향 애플리케이션 개발 이란 말이 나왔는데 이것을 이해하기위해선

객체지향 프로그래밍을 알아야 한다

객체지향 프로그래밍이란?

컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나, 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 보는 것이다.

객체 들의 모임으로 보게 되면 좋은점은?

프로그램을 유연하고 변경이 용이하게 만들 수 있다

유연하고 변경이 용이 하다는 것은?

컴퓨터 부품 깔아 끼우듯이, 컴포넌트를 쉽게 갈아 끼우는 것, 즉 다형성

다형성의 본질은?

클라이언트를 변경하지않고, 서버의 구현기능(인터페이스를 구현한 객체 인스턴스) 을 유연하게 변경할 수 있는 것이다.

클라이언트가 TestRepository를 보고있다(의존하고 있다)라고 해보자

그리고 TestRepository는 오버라이딩 된 2개의 메소드가 있다고 하자 OneMethod, TwoMethod

그렇다면 서버는 아래와 같은 방식으로 코드를 짤 수 있게 된다.

public class 클라이언트 {

private TestRepository testRepository = new OnewMethod

}

또는

public class 클라이언트 {

private TestRepository testRepository = new TwoMethod

}

이것이 클라이언트가 TestRepository를 보는 것(의존하는 것)은 전혀 건드리지않고 서버의 구현기능을 유연하게 변경한 것이다.

객체지향의 꽃은 다형성이다.

스프링은 다형성을 극대화해서 이용할 수 있게 해준다.

제어의역전(IOC), 의존관계 주입(DI)은 다형성을 활용해서 역할과 구현을 편리하게 다룰 수 있도록 지원한다.

(출처 유튜브 : https://youtu.be/fkwb8coxBJM )

Logback이란?

Logback 이란Log4J를 기반으로 개발된 라이브러리다.

print문을 찍는 거보다 Resource를 적게 사용하여 기록을 남길때 사용

특징으로는

1. 로그에 특정 레벨 설정 가능 (Trace-> Debug -> info -> Warn -> Error)

Error : 시스템적으로 심각한 문제가 발생하여 작동 불가

Warn : 시스템 에러의 원인이 될 수 있는 경고

Info : 상태변경과 같은 정보성 메시지

Debug : 어플리케이션의 디버깅을 위한 메시지 레벨

Trace : Debug 레벨보다 더 디테일판 메시지를 표현하기 위한 레벨

2. 출력 방식에 대해 설정 가능 (로그, 파일, 메일 등으로 볼 수 있음)

3. 어플리케이션 중단 없이 설정 변경 가능

4. 별도 프로그램 없이 로그 압축 지원

5. 로그 보관 기간 설정 가능

Logback 설정들

Appender

Log의 형태 및 어디에 출력할지 설정하기 위한 영역

ConsoleAppender : 콘솔에 로그를 출력

FileAppender : 파일에 로그를 저장

RollingFilfeAppender : 여러 개의 파일을 순회하며 로그를 저장

SMTPAppender : 로그를 메일로 저장

DBAppender : 데이터베이스에 로그를 저장

Logger, Root

root : 전역 설정, 특정 지역에 logger 설정이 있다면 해당 logger 설정이 default

logger : 지역 설정

위 말고도 여러 설정이 있음

스프링부트에서 기본설정을 제공하여

application.properties에 간단한 설정으로 사용 가능

ex)

logging.level.com.deeping = 레벨설정

logging.file.name=저장주소/로그파일이름.log (파일로 로그저장 시 사용)