로그 간단한 개념 및 라이브러리
참고
아파치 log4j2 공식홈페이지: https://logging.apache.org/log4j/2.x/
Logging 라이브러리 벤치마킹: http://blog.takipi.com/the-logging-olympics-a-race-between-todays-top-5-logging-frameworks/
로깅 관련 게시물
http://m.blog.naver.com/writer0713/220733443205
http://stackoverflow.com/questions/30019585/log4j2-why-would-you-use-it-over-log4j
좋은 글 감사합니다.
로깅은 주로 서버(또는 백) 사이드 개발자가 활용하며, 프로그램의 상태를 지속, 실시간으로 출력하는 방식이다.
로깅은 일반적으로 디스크에 데이터를 쓰는 IO 작업이다.(그래서 성능 이슈, 비용 증가 발생)
로깅은 주로 프로그램 모니터링, 디버깅, 분석 및 통계 등을 위해 사용한다.
로깅 라이브러리는 log4j ver1/2, Logback, Java Util Logging 있는데,
도대체 slf4j 뭔지 이해가 안간다. 그래서 알아보려한다.
log4j, java util logging, logback 등의 로깅 유틸리티를 똑같은 방법으로 사용할 수 있게 해준다. (어떤 이유로 인해 로깅 유틸리티를 바꿔도 실제 코드에 영향이 없도록 도와준다)
-> ?? 로깅 라이브러리를 동일한 방식으로 사용, 퍼서드 얘기가 나왔다. 디자인 패턴의 어뎁터 패턴이 떠오른다.
즉 slf4j 퍼사드 패턴이다? 랄까?
퍼사드 패턴: 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공한다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있다.(헤드퍼스트 디자인 페턴(KR) 302페이지)
결국 로깅 라이브러리와 slf4j 라이브러리를 함께 사용하여, 로깅 기능을 구현하고, 원하는 로깅 라이브러리(log4j, logback, JUL) 또는 상황에 맞게 라이브러리를 사용한다. slf4j는 구상체, 로깅라이브러리는 구현체로, 매핑 후, 로깅 요청 전달하는 역할이다.
이렇게 이해 했는데 맞는지 잘 모르겠다.
다시 본론으로 돌아와서.
Log4j1.x는 2015년 8월 이후 Log4j1.x는 라이브러리 라이프 사이클이 끝이다.
또한 자바9에서 작동하지 않을 예정,(Log4j1.x는 관속으로 들어갈 예정이다)
알아볼 de facto standard가 된 Log4j ver2.x 로깅 라이브러리다.
- 커스텀 로깅(지정된 6단계 로깅 레벨 외 사용자 정의 로길 레벨 추가 기능)
- 람다 지원(lazy logging: lazy 기능을 통한 약간의 성능 이점 확보)
- low-garbage
- SLF4J, JUL, Log4j1.x 지원
- 동시성 프로그래밍 하는데 있어, 버그를 야기시키지 않는다.(log4j1.x 보다)
- XML, JSON, YAML을 통해 config 파일 구성
'개발관련 > (과거)메모' 카테고리의 다른 글
자바 웹 서버(톰켓, 카탈리나, 재스퍼) (0) | 2017.04.03 |
---|---|
자바 제네릭 지우개 (0) | 2017.03.31 |
자바 Keytool(셀프 사인) Server/Client 소켓 통신 방법 (0) | 2017.03.31 |
오픈소스 ERD툴: ERMaster (0) | 2017.03.30 |
이클립스 메모리 할당 허용 값 설정 (0) | 2017.03.30 |