Log4j 2 Manual - Introduction
Log4j2 번역 및 정리 작업
출처: https://logging.apache.org/log4j/2.x/manual/index.html
Introduction
대부분의 대규모 응용프로그램은 자체 logging or tracing API가 포함되어있다. 11996년 초 E.U. SEMPER 프로젝트는 tracing API를 만들기 결정하고, 결국 이 프로젝트의 기능을 향상 및 구체화하여 Log4j Java용 로깅 패키지로 발전했다. 이 패키지는 Apache Software License(ver 2.0) 에 의해 배포된다. 2
log statements를 코드에 넣는것은 디버깅을위한 간단한(low-tech) 방법이다. 디버거가 항상 사용 가능하거나 적용 가능하지 않기 때문에 유일한 방법일 수 있다. 대개 멀티 스레드 및 분상 프로그래밍의 경우가 해당된다.
logging은 개발 사이클에 중요한 요소이다. 응용 프로그램 실행에 대한 context 정보를 제공한다. logging을 코드에 넣으면 logging 출력을 위해 개발자가 개입할 필요가 없다. 또한, 로그 출력은 파일처리를 통해 스토리지에 보관하여 차후에 활용할 수 있다.(감사 등)
As Brian W. Kernighan and Rob Pike put it in their truly excellent book "The Practice of Programming":
As personal choice, we tend not to use debuggers beyond getting a stack trace or the value of a variable or two. One reason is that it is easy to get lost in details of complicated data structures and control flow; we find stepping through a program less productive than thinking harder and adding output statements and self-checking code at critical places. Clicking over statements takes longer than scanning the output of judiciously-placed displays. It takes less time to decide where to put print statements than to single-step to the critical section of code, even assuming we know where that is. More important, debugging statements stay with the program; debugging sessions are transient.
Logging은 프로그램의 속도(성능)을 느려지게할 수 있는 단점이 있다. logging이 지나치게 길 경우, 스크롤하는데 맹목적일 수 있다(blindness). 이런 우려로 인하여 log4j는 안정적, 신속, 확장 가능하도록 설계하였다. logging은 프로그램의 메인 요소가 아니기 때문에, log4j API는 쉽게 이해할 수 있고, 사용이 간단하다.
Log4j 2
- (대부분, 다양한 오픈 소스 프로젝트( Mybatis, Spring KMIP4J 등)에는 logging을 사용한다. 거의 필수이며, 아파치 Log4j1.x는 De facto Standard(사실상 표준)라고 칭한다. ) [본문으로]
- BSD와 유사하며, 소스 코드 공개 여부:X 사용 여부에 대한 명시를 해야하며 명시에 대한 양식은 Apache 홈페이지에 있다. [본문으로]
- http://lmax-exchange.github.io/disruptor/ http://stackoverflow.com/questions/14630901/what-is-lmax-disruptor-design-pattern 어렵다..;; 나중에 따로보자 [본문으로]
'개발관련 > (과거)메모' 카테고리의 다른 글
Integer.ParseInt() vs Integer.valueof() (1) | 2017.05.08 |
---|---|
자바 Reflect Class, Method (0) | 2017.04.29 |
자바 웹 서버(톰켓, 카탈리나, 재스퍼) (0) | 2017.04.03 |
자바 제네릭 지우개 (0) | 2017.03.31 |
자바 Keytool(셀프 사인) Server/Client 소켓 통신 방법 (0) | 2017.03.31 |