JAVA(240)
-
애플리케이션 logging을 위한 적절한 방법
1. 작업을 위해서 적절한 도구들을 사용하자 SLF4J를 활용하여 다음과 같이 구현할 수 있습니다. log.debug("Found {} records matching filter: '{}'", records, filter); 2. 잊지말자, 로깅 레벨(logging levels)들은 너를 위한 것이다. 1) ERROR : 요청을 처리하는 중 오류가 발생한 경우 표시됩니다. 2) WRAN : 처리 가능한 문제, 향후 시스템 에러의 원이 될 수 있는 경고성 메시지를 표시합니다. 3) INFO : 상태 변경과 같은 정보성 로그를 표시합니다. 4) DEBUG : 프로그램을 디버깅하기 위한 정보를 표시합니다. 5) TRACE : 추적 레벨은 DEBUG 레벨보다 훨씬 상세한 정보를 표시합니다. 3. 무엇을 로깅할 ..
2023.05.01 -
Logback 라이브러리 설정
설정 파일 loback의 기본 설정 파일은 logback.xml 입니다. logback 라이브러리는 classpath 아래에 위치하는 logback.xml을 기본으로 탐색합니다. xml 파일에 로그 설정 logback.xml 파일에 다음과 같이 설정할 수 있습니다. %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 기본 로그 레벨은 info 레벨로 설정됩니다. kr.codesquad.cafe 패키지의 로그 레벨은 debug 레벨로 설정됩니다. 로그 출력 방식은 콘솔(ConsoleAppender)로 설정됩니다. 로그 레벨(log level) 로그 레벨은 다음과 같습니다. TRACE < DEBUG < INFO < WARN < ERROR 1) ERROR : ..
2023.04.24 -
SLF4J 개념 및 동작과정
1. System.out.println 문제점 로그 라이브러리는 로그 레벨을 설정할 수 있기 때문에 특정 레벨 이상의 로그만 출력할 수 있지만 출력문은 레벨 상관없이 출력됩니다. 로그 라이브러리는 파일이나 외부 서버에 저장할 수 있는 반면 출력문은 이러한 기록을 파일로 기록하기 어렵습니다. 로그 라이브러리를 사용하는 것보다 출력문을 사용하면 성능 저하가 발생할 수 있습니다. 개발 중에 추가한 출력문을 주석 처리하거나 제거해야 할 수 있습니다. 2. Logging 라이브러리 로깅 라이브러리는 애플리케이션에서 발생하는 이벤트를 기록하고 추적할 수 있는 도구입니다. 로깅 라이브러리를 활용하여 디버깅 메시지를 레벨로 구분할 수 있으며, 레벨에 따라 로깅 메시지의 출력 유무를 결정할 수 있습니다. 대표적 로깅 라..
2023.04.23 -
다형성(Polymorphism)
다형성이란 무엇인가? 다형성은 역할과 구현이라는 개념을 분리한 기술이라고 생각합니다. 역할은 어떤 기능들을 수행할 수 있는 모음이고 실체가 존재하지 않는 개념입니다. 구현은 역할안에 있는 기능들을 실제로 수행하는 대상이라고 표현할 수 있습니다. 구현은 역할과는 다르게 실체를 가지고 있는 대상입니다. 즉, 정리하면 다음과 같습니다. 다형성 : 역하과 구현 개념을 분리한 기술 역할 : 어떤 기능들을 수행할 수 있는 모음 구현 : 역할안에 있는 기능들을 실제로 수행하는 대상 다형성 비유 다형성을 비유하면 자동차로 비유할 수 있습니다. 운전자가 자동차를 운전할 때 소나타를 운전하다가 아반떼로 바꾸어 운전해도 큰 어려움이 없습니다. 왜냐하면 자동차의 기능인 엑셀, 브레이크와 같은 표준 기능들이 소나타나 아반떼가 ..
2023.04.23 -
객체지향 언어 특징 (캡슐화, 상속, 추상화, 다형성)
목차 OOP 특징 캡슐화(Encapsulation) 상속(Inheritance) 추상화(Abstraction) 다형성(Polymorphism) OOP(Object-Oriented-Programming) 특징 캡슐화(Encapsulation) 상속(Inheritance) 추상화(Abstraction) 다형성(Polymorphism) 캡슐화(Encapsulation) 캡슐화는 외부의 접근으로부터 클래스의 자세한 정보인 필드 멤버와 메소드를 숨기는 방법입니다. 그리고 캡슐화가 적용된 클래스는 오직 public 인터페이스를 통하여 인터페이스의 메소드(메시지)를 노출합니다. 상속(Inheritance) 상속은 한 클래스가 또 다른 클래스의 필드 멤버와 메소드 기능들을 사용할 수 있도록 하는 것입니다. 자바에서 상..
2023.03.29 -
JVM(Java Virtual Machine) 실행원리와 구조
목차 JVM 개념 클래스로더 서브시스템(ClassLoader Subsystem) 로딩(Loading) 링킹(Linking) 검증(Verification) 준비(Preparation) 해석(Resolution) 초기화(Initialization) 부트스트랩 클래스 로더(Bootstrap class loader) 확장 클래스 로더(Extension class loader) 애플리케이션 클래스 로더(Application class loader) JVM Memory 메소드 영역(Method area) 힙 영역(Heap area) 스택 영역(Stack area) PC 레지스터(PC Registers) 네이티브 메소드 스택(Native method stacks) 실행 엔진(Execution Engine) 인터프리터..
2023.03.27