로그4j
Log4j![]() |
![]() | |
개발자 | Apache 소프트웨어 재단 |
---|---|
초기 릴리즈 | 2001년 1월 8일, [1] | 전(
안정된 릴리스 | |
저장소 | github |
기입처 | 자바 |
운영 체제 | 크로스 플랫폼 |
유형 | 로깅 |
면허증. | Apache 라이센스 2.0 |
웹 사이트 | logging |
Apache Log4j는 원래 Ceki Gülcü에 의해 작성된 Java 기반 로깅 유틸리티입니다.Apache Software Foundation의 프로젝트인 Apache Logging Services의 일부입니다.Log4j는 여러 Java 로깅 프레임워크 중 하나입니다.
이후 Gülcü는 Log4j의 후계자를 제공할 목적으로 SLF4J, reload4j[4] 및 Logback[5] 프로젝트를 시작했습니다.
Apache Log4j 팀은 Log4j 1.2, 1.3의 문제에 대응하여 Log4j[6] 2를 개발했습니다.java.util.logging
및 Logback([7]로그백), 이러한 프레임워크에서 발생한 문제에 대처합니다.또한 Log4j 2는 이전 버전보다 확장성이 뛰어난 플러그인 아키텍처를 제공했습니다.Log4j 2는 "어댑터"를 사용할 수 있지만 1.x [8]버전과의 하위 호환성은 없습니다.2015년 8월 5일 Apache Logging Services Project Management Committee는 Log4j 1의 수명이 다했으며 Log4j 1의 사용자에게 Apache Log4j [9]2로의 업그레이드가 권장된다고 발표했습니다.2022년 1월 12일 log4j 1.2.17에서 가장 긴급한 문제를 수정하고 이행 [10]경로를 쉽게 하기 위해 reload4j 버전 1.2.18.0이 발표되었습니다.
2021년 12월 9일, Alibaba Cloud Security Team에 의해 Log4j 2의 임의 코드 실행과 관련된 제로 데이 취약성이 공개되었고 기술자 "Log4Shell"[11]이 지정되었습니다.이는 Tenable에 의해 [12]"지난 10년간 가장 크고 가장 치명적인 취약성"으로 특징지어졌습니다.
Apache Log4j 2
Apache Log4j 2는 2014년 7월 GA 버전으로 출시된 Log4j 1의 후속 버전입니다.이 프레임워크는 처음부터 다시 작성되었으며 Log4j 1 및 java.util.logging 등의 기존 로깅 솔루션에서 영감을 얻었습니다.Log4j 1과의 주요 차이점은[13][14] 다음과 같습니다.
- 신뢰성 향상.Log4j 1 또는 Logback과 같이 프레임워크를 재구성하는 동안 메시지가 손실되지 않음
- 확장성:Log4j 2는 사용자가 커스텀 컴포넌트를 정의하고 구성할 수 있는 플러그인 시스템을 지원합니다.
- 간단한 구성 구문
- xml, json, yaml 및 속성 구성 지원
- 필터의 개량
- 컨피규레이션파일, 시스템 속성, 환경변수, ThreadContext Map 및 이벤트에 존재하는 데이터에 정의된 값에 대한 속성 룩업 지원
- 여러 API 지원: Log4j 2는 Log4j 2, Log4j 1.2, SLF4J, Commons Logging 및 java.util.logging(JUL) API를 사용하는 응용 프로그램에서 사용할 수 있습니다.
- 커스텀 로그레벨
- Java 8 스타일의 람다 지원으로 "Lazy Logging" 지원
- 마커
- 사용자 정의 메시지 개체 지원
- 일반적인 구성의 "쓰레기 없음 또는 쓰레기 적음"
- 속도 향상
- Linux 지원 향상
Log4j 2의 가장 잘 알려진 기능 중 하나는 "비동기 로거"[15]의 성능입니다.Log4j 2는 LMAX Disruptor를 [16]사용합니다.라이브러리는 커널 잠금의 필요성을 줄이고 로깅 성능을 12배 향상시킵니다.예를 들어 Log4j 2는 1초에 1,800,000개 이상의 메시지를 쓸 수 있지만 Logback이나 Log4j 1 등의 다른 프레임워크에서는 2,000,000개 미만의 메시지를 쓸 수 있습니다.
특징들
Log4j 로그 수준
다음 표에서는 Log4j에 내장된 로그 수준 및 메시지를 중대도 순으로 정의합니다.왼쪽 열에는 Log4j의 로그 수준 지정이 나열되고 오른쪽 열에는 각 로그 수준에 대한 간단한 설명이 표시됩니다.
레벨 | 묘사 |
---|---|
쉬는 | 가능한 가장 높은 등급으로 로깅을 끄는 것을 목적으로 합니다. |
치명적 | 조기 종료의 원인이 되는 중대한 에러.이러한 정보는 상태 콘솔에 즉시 표시되어야 합니다. |
에러 | 기타 런타임 오류 또는 예기치 않은 상태.이러한 정보는 상태 콘솔에 즉시 표시되어야 합니다. |
경고 | 사용되지 않는 API의 사용, API의 부적절한 사용, '거의' 오류, 바람직하지 않거나 예기치 않은 기타 런타임 상황, 그러나 반드시 "잘못된" 상황은 아닙니다.이러한 정보는 상태 콘솔에 즉시 표시되어야 합니다. |
정보 | 대상 런타임 이벤트(시작/종료)이러한 정보는 콘솔에서 바로 볼 수 있도록 주의하여 최소한으로 유지하십시오. |
디버깅 | 시스템을 통과하는 흐름에 대한 상세 정보.로그에만 기록될 것으로 예상합니다.일반적으로 응용 프로그램에 의해 기록되는 대부분의 행은 DEBUG로 작성되어야 합니다. |
추적하다 | 가장 상세한 정보.로그에만 기록될 것으로 예상합니다.버전 1.2.12 [17]이후 |
커스텀 로그레벨
Log4j 2에서는 사용자가 자신의 로그 수준을 [18]정의할 수 있습니다.소스 코드 생성 도구는 내장된 로그 수준과 동일한 사용자 지정 로그 수준을 지원하는 로거를 생성하기 위해 제공됩니다.사용자 지정 로그 수준은 기본 제공 로그 수준을 보완하거나 대체할 수 있습니다.
Log4j 구성
Log4j는 구성 파일 또는 Java 코드를 통해 구성할 수 있습니다[19].컨피규레이션파일은 XML, JSON, YAML 또는 속성 파일 형식으로 쓸 수 있습니다.구성 내에서 로거, 추가 및 레이아웃의 세 가지 주요 구성 요소를 정의할 수 있습니다.Log4j를 사용하는 응용 프로그램을 변경하지 않고 파일을 통해 로깅을 구성하면 로깅을 켜거나 끌 수 있다는 장점이 있습니다.예를 들어 문제가 발생할 때까지 로그오프 상태에서 응용 프로그램을 실행할 수 있으며, 그런 다음 구성 파일을 수정하는 것만으로 로깅을 다시 켤 수 있습니다.
로거에는[20] 로그 메시지 수신처가 지정됩니다.Java 응용 프로그램에서 알려진 이름입니다.각 로거는 현재 로깅되는 로깅 수준(FATAL, ERROR 등)에 대해 개별적으로 설정할 수 있습니다.Log4j의 초기 버전에서는 이를 카테고리 및 우선순위라고 불렀지만 현재는 로거 및 레벨이라고 부릅니다.Logger는 로그 메시지를 여러 부록에 보낼 수 있습니다.
실제 출력은 부록에 [21]의해 수행됩니다.FileAppender, RollingFileAppender, ConsoleAppender, SocketAppender, SyslogAppender, SMTPAppender 등의 알기 쉬운 이름을 가진 다수의 Appender를 사용할 수 있습니다.Log4j 2는 Apache Flume, Java Persistence API, Apache Kafka, NoSQL 데이터베이스, 메모리 매핑 파일, 랜덤 액세스[22] 파일 및 ZeroMQ 엔드포인트에 쓰는 추가 프로그램을 추가했습니다.여러 개의 부록을 모든 Logger에 연결할 수 있으므로 동일한 정보를 여러 출력(예를 들어 로컬 파일 및 다른 컴퓨터의 소켓 리스너)에 기록할 수 있습니다.
부록은 레이아웃을 사용하여[23] 로그 항목의 형식을 지정합니다.한 번에 한 줄씩 로그 파일을 포맷하는 일반적인 방법은 패턴 문자열을 사용하는 PatternLayout입니다. 패턴 문자열은 C/C++ 함수 printf와 비슷합니다.HTML 형식과 XML 형식이 각각 더 편리할 때 사용하는HTML Layout 형식과 XML Layout 형식도 있습니다.Log4j 2에서는 CSV, Graylog Extended Log Format(GELF),[24] JSON, YAML 및 RFC-5424의 [25]레이아웃이 추가되었습니다.
Log4j 2에서 필터를[26] 구성 요소에 정의하면 어떤 로그 엔트리를 어떤 로거와 추가 로그에서 처리해야 하는지를 보다 세밀하게 제어할 수 있습니다.Log4j 2에서는 로그레벨에 의한 필터링과 메시지스트링의 정규 표현 매칭에 가세해 버스트필터, 타임필터, 마커 또는 스레드콘텍스트 맵, JSR 223 스크립트필터등의 다른 로그이벤트 속성에 의한 필터링을 추가했습니다.
동작 불량 설정을 디버깅하려면 다음 절차를 수행합니다.
- Log4j 2 구성에서 다음을 설정합니다.
status
attribute to TRACE: 내부 상태 로깅 출력을 표준 출력으로 보냅니다.구성을 찾기 전에 상태 로깅을 사용하도록 설정하려면 Java VM 속성을 사용합니다.-Dorg.apache.logging.log4j.simplelog.StatusLogger.level=trace
. - Log4j 1에서 Java VM 속성을 사용합니다.
-Dlog4j.debug
.
log4j2.xml 컨피규레이션파일이 인스펙션에서 로드된 위치를 확인하려면getClass().getResource("/log4j2.xml")
.
Log4j에는 Log4j 구성이 없는 Log4j 계측 Java 응용 프로그램의 "설정되지 않은" 구성 또는 "기본" 구성도 포함되어 있습니다.그러면 프로그램이 구성되지 않았다는 경고와 경고 및 경고 및 구성에 대한 자세한 내용을 확인할 수 있는 Log4j 웹 사이트의 URL이 표시됩니다.구성되지 않은 Log4j 응용 프로그램은 이 경고를 인쇄할 뿐만 아니라 ERROR 또는 FATAL 로그 항목만 표준 출력합니다.
Log4j 2의 예
<?xml version="1.0" encoding="UTF-8"?> <설정 상태="표시"모니터Interval="60"> <프로퍼티> <프로퍼티명="파일명"> target/test.log </Property> </Properties> <Appenders> <콘솔명=>STDOUT"> <PatternLayout pattern=sqd %p %c{1.} [%t] %m%n"/> </Console> <파일명="fileName="${filename}"> <PatternLayout> <pattern> %d %p %c{1.만약 당신이(예를 들어 Logger.getLogger(AClass.class))클래스 이름을 이용하여 만약 AClass은 일부 벌목꾼들이 검색}[%t]%m%n<, /pattern>,<>/PatternLayout>,<>/File>,<>/Appenders>, <, Loggers>,<>!이름이 'org.springframework으로 시작한다, 벌목꾼의 뿐 아니라 1급 이상"정보"의 메시지를 접속할 것이다. 그 org.springframework 패키지 그것은 이 항목,><, Logger name="org.springframework"level="정보"additivity="거짓"/>,>!--필터 예:로거에 대한 이름 'com.mycompany.myproduct'으로, 수준 혹은 더 높은"디버그"의 ThreadContextMap 데이터를 키-값 쌍"test=123", 또한 thes 보내어 로그 엔트리기 시작하면 속할 것이다.e로그 entries to "STDOUT" appender. --> <Logger name="com.mycompany.myproduct" level="additivity="true"> <ThreadContextMapFilter> <ThreadValuePair key=" 값=" 123"/> </> </Threfender> </Threfender>STDOUT"/> </Logger> <!-- 디폴트로는 레벨 "trace" 이상의 모든 로그메시지가 기록됩니다. 로그 메시지는 "파일" 앱엔더로 전송되고 "오류" 이상의 로그 메시지는 "STDOUT" 앱엔더로 전송됩니다. --> <루트 레벨="file"/> <AppenderRef="file"/> <AppenderRefref="STDOUT" level="error"/> </Root> </Loggers> </설정>
Log4j 1.2의 예
<?xml version="1.0" encoding="UTF-8"?> <!DOSCTYPE log4j:구성 PUBLIC -//LOGER" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"> <log4j: 설정> <!-- appender는 콘솔이나 파일 등의 출력처입니다. 부록의 이름은 임의로 선택됩니다. --> <응모자> 이름=「스탭」 클래스="context.context.log4j.Console Appender"> <클라이언트> 클래스="context.context.log4j.패턴 레이아웃"> <클라이언트> 이름="변환 패턴" 값=%d{AUBLETE}%5p%c{1}:%L - %m%n /> </filters> </appender> <!-- 카테고리 'springframework'의 로거는 레벨 'info' 이상의 메시지만 기록합니다. 클래스 이름(Logger.getLogger(ACLASS.class) 등)을 사용하여 로거를 취득한 경우 AClass가 org.springframework 패키지의 일부인 경우 이 카테고리에 속합니다. --> <클라이언트> 이름="springframework"> <레벨> 값="정보"/> </filters> <!-- 봄의 모든 것은 "info"로 설정되었지만 수업을 위한 것은 아니었다. Property Editor Registry Support "디버깅" 로깅 필요 --> <클라이언트> 이름="springframework.beats.PropertyEditorRegistry지원"> <레벨> 값="실패"/> </filters> <클라이언트> 이름="190.acegisecurity"> <레벨> 값="정보"/> </filters> <root> <!-- 특별히 정의되지 않는 한 레벨 "displayed" 이상의 모든 로그메시지가 기록됩니다. 달리 정의되지 않는 한 모든 로그 메시지는 Appender "stdout"에 기록됩니다. --> <레벨> 값="실패" /> <appender-ref> 참조=「스탭」 /> </root> </log4j: 설정>
TTCC
TTCC는 log4j에서 [27]사용되는 메시지 형식입니다.TTCC는 Time Thread Category Component의 약자입니다.다음 패턴을 사용합니다.
%r [%t] %-5p %c %x - %m%n
어디에
니모닉 | 묘사 |
---|---|
%r | 레이아웃 구축에서 로깅 이벤트 생성까지 경과한 시간(밀리초)을 출력하기 위해 사용됩니다. |
%t | 로깅 이벤트를 생성한 스레드의 이름을 출력하는 데 사용됩니다. |
%p | 로깅 이벤트의 priority를 출력하기 위해 사용합니다. |
%c | 로깅 이벤트의 카테고리를 출력하기 위해 사용됩니다. |
%x | 로깅 [28]이벤트를 생성한 스레드와 관련된 NDC(네스트된 진단 컨텍스트) 출력에 사용됩니다. |
%X{키} | 지정된 [29]키의 로깅이벤트를 생성한 스레드와 관련된 MDC(Mapped Diagnostic Context) 출력에 사용됩니다. |
%m | 로깅 이벤트와 관련된 응용 프로그램에서 제공한 메시지를 출력하기 위해 사용합니다. |
%n | 플랫폼 고유의 줄바꿈 문자를 출력하기 위해 사용됩니다. |
출력 예
467 [main] INFO org.apache.log4j. 예정렬 - 기본 메서드를 종료하는 중입니다.
포트
- log4c - C용 포트.Log4C는 LGPL 라이선스로 SourceForge에서 릴리즈된 C 기반 로깅 라이브러리입니다.다양한 Unix 운영체제에서는 autoconf 파일과 automake 파일이 제공됩니다.Windows 에서는, MSVC 로 사용하기 위한 Make 파일이 제공됩니다.개발자는 빌드 엔지니어링 요건에 따라 자체 제조 시스템을 사용하여 소스를 컴파일할 수도 있습니다.log4c 라이브러리의 인스턴스는 환경변수 사용, 프로그래밍 방식 또는 XML 설정 파일의 3가지 방법으로 구성할 수 있습니다.log4c에는 파일, 스트림 및 메모리 매핑파일에 대한 추가가 있습니다.(소켓 어댑터 없음).최종 버전은 2013년에 출시된 1.2.4이며, 프로젝트는 더 이상 활발하게 [30]개발되지 않습니다.
- log4js - JavaScript용 포트.Log4js는 Apache Software Foundation의 라이센스로 제공됩니다.Log4js의 특별한 기능 중 하나는 브라우저의 이벤트를 서버에 원격으로 기록하는 기능입니다.Ajax를 사용하면 로그 이벤트를 여러 형식(XML, JSON, 플레인 ASCII 등)으로 평가 대상 서버로 전송할 수 있습니다.log4js에는 다음 추가가 구현되어 있습니다.AjaxAppender, ConsoleAppender, FileAppender, JSConsoleAppender, MetatagAppender 및 WindowsEventsAppender.다음 레이아웃 클래스가 제공됩니다.Basic Layout, Html Layout, JSON Layout 및 XML Layout.2021년 현재[update] 최신 버전은 2018년 [31]10월 18일 중 2.0입니다.
- log4javascript - JavaScript의 다른 포트.log4javascript는 log4j에 기반한 JavaScript 로깅 프레임워크입니다.2021년 현재[update] 최신 버전은 2015년 [32]5월 23일에 출시된 1.4.13입니다.
- JSNLog - JavaScript용 포트.를 사용하여 JavaScript 로거의 메시지를 서버 측 로그에 자동으로 저장합니다.Log4Net, NLog, Elmah 또는 Common과 통신하는 NET 서버 측 컴포넌트.로깅.클라이언트 및 서버측 이벤트에 대한 통합 로그를 제공합니다.요청 ID는 특정 사용자와 관련된 이벤트를 연관시킵니다.설정은 서버 측 web.config 파일을 통해 이루어집니다.스택 트레이스를 포함한 예외 로깅을 지원합니다.2021년 현재[update] 최신 버전은 3.0.0이며 [33]정기적으로 업데이트가 이루어졌습니다.
- Apache Log4net - Microsoft 포트.NET 프레임워크초기 작업은 Neoworks에 의해 이루어졌으며 2004년 2월에 Apache Software Foundation에 기부되었습니다.프레임워크는 원래 log4j와 비슷하지만의 신기능을 활용합니다.NET 런타임Negrated Diagnostic Context(NDC; 중첩 진단 컨텍스트) 및 Mapped Diagnostic Context(MDC; 매핑 진단 컨텍스트)를 제공합니다.2022년 현재[update] 최신 버전은 2.0.[34]15입니다.
- log4perl - log4j의 Perl 포트.2017년 2월 버전 1.49는 2021년 [35]현재[update] 최신 버전입니다.
- Apache log4php - "PHP를 위한 다용도 로깅 프레임워크입니다.원래는 Apache log4j에서 PHP로 포트로, 다양한 PHP 고유의 [36]기능을 포함하도록 성장했습니다."
- PL-SQL-Logging-Utility는 PL/SQL의 [37]log4j를 채택한 것입니다.
- Log4db2는 DB2 for LUW용 로깅 유틸리티로 SQL PL [38]코드와 함께 SQL 명령을 사용합니다.
- Apache Log4cxx - Apache log4j 이후 패턴화된 C++용 로깅 프레임워크. 대부분의 플랫폼 고유 코드에 Apache Portable Runtime을 사용하며 APR에서 지원되는 모든 플랫폼에서 사용할 수 있습니다.최신 버전은 [39]2022년에 출시된 0.13.0입니다.
- Log4r - Ruby 프로그램에서 사용하기 위해 Ruby로 작성된 포괄적이고 유연한 로그 라이브러리입니다.Apache Log4j [40]프로젝트에서 영감을 받아 많은 기능을 제공합니다.
Log4Shell 취약성
설명자 "Log4Shell"(CVE-2021-44228)이 지정된 Log4j 2의 원격 코드 실행과 관련된 제로 데이 취약성이 2021년 11월 24일 Alibaba에 의해 발견되어 Apache에 보고되었으며 2021년 [11]12월 9일 트윗으로 게시되었습니다.해당 서비스에는 Cloudflare, iCloud, Minecraft: Java Edition,[41] Steam, Tencent QQ 및 [42][43][44]Twitter가 포함됩니다.Apache Software Foundation은 Log4에 최대 CVSS 중대도 10을 할당했습니다.수백만 대의 서버가 잠재적으로 [44]부정 이용에 취약할 수 있기 때문에 셸입니다.이 취약성은 사이버 보안 회사인 Tenable에 의해 "지난 [12]10년간 가장 크고 가장 중대한 취약성"으로, Lunasec의 Free Wortley는 "대단한 규모의 설계 실패"[45]로 특징지어졌습니다.
미국에서는, 사이버 보안 기반 시설 보호 진흥원(CISA), 젠 Easterly의 감독과 상인들의 그것의 가장 높은 위협 수준에 있는 것이라고는 연구 성과가 지정한 "극단적 전화 소프트웨어 updates,[46]와 독일 기관 연방 사무소 정보 보호(BSI)에 우선 순위를 매기라고 조언한 공적"중요한"라고 비판했다.ly c의례적인 위협 상황" (추정)[47][48]Canadian Center for Cyber Security(CCCS)는 조직들에게 즉각적인 조치를 취할 것을 요구했다.[49]
이 취약성의 원인이 되는 기능은 Log4j 버전 2.15.0-rc1(이[50] 취약성이 공개되기 3일 전인 2021년 12월 6일에 정식으로 릴리스됨)에서 삭제되어 리모트룩업을 제한하는 다양한 설정으로 대체되어 취약성을 [51][52]경감할 수 있습니다.보안을 강화하기 위해 이 취약성의 기반이 된 JNDI를 사용하는 모든 기능은 기본적으로 비활성화되며 버전 2.16.0 [53][54]이후 메시지 검색 지원은 제거됩니다.
공식 Minecraft: Java Edition 런처에서는 이 취약성이 수정되었습니다.커스텀 런처 또는 커스텀 Java 버전을 사용하면 클라이언트에 패치가 적용되지 않았을 수 있습니다.이 취약성이 패치되지 않은 서버에서 재생하면 서버의 모든 플레이어가 다른 클라이언트의 컴퓨터에서 잠재적인 악성 코드를 실행할 수 있습니다.1.18.1 이상 버전에서 싱글 플레이어 또는 멀티 플레이어를 재생하면 이 취약성을 방지할 수 있습니다.1.7 이전 버전은 해당되지 않습니다.게임 서버 호스트는 버전 1.7-1.18을 실행하고 있는 경우 서버에 패치를 적용해야 합니다.이 패치를 적용하지 않으면 모든 플레이어가 이 [55]취약성을 사용할 수 있습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "Apache Log4j 1.2 Release History". apache.org. Apache Software Foundation. Retrieved September 2, 2014.
- ^ https://lists.apache.org/thread/0rfbv255r4zcw462xjh8y3s2dx78v2qh 를 참조해 주세요.
- ^ "Log4j – Changes - Apache Log4j 2". apache.org. Apache Software Foundation. Retrieved December 18, 2021.
- ^ "Reload4j Home". reload4j.qos.ch. Retrieved January 12, 2022.
- ^ "Logback Home". Logback.qos.ch. Retrieved July 24, 2014.
- ^ "Log4j 2 Guide - Apache Log4j 2". Logging.apache.org. July 12, 2014. Retrieved July 24, 2014.
- ^ Goers, Ralph (December 15, 2019). "Why was Log4j 2 created?". Ralph Goers.
- ^ "Log4j 2 Guide - Apache Log4j 2: News". Logging.apache.org. July 12, 2014. Retrieved July 24, 2014.
- ^ "Apache Logging Services Project Announces Log4j 1 End-Of-Life; Recommends Upgrade to Log4j 2". blogs.apache.org. August 5, 2015. Retrieved July 3, 2016.
- ^ "Reload4j Project; Easy migration from log4j 1.2.x". qos.ch. January 12, 2022. Retrieved January 12, 2022.
- ^ a b "What's the Deal with the Log4Shell Security Nightmare?". Lawfare. December 10, 2021.
- ^ a b "Recently uncovered software flaw 'most critical vulnerability of the last decade'". the Guardian. Associated Press. December 11, 2021.
- ^ "The new log4j 2.0". Grobmeier.de. December 5, 2012. Retrieved July 24, 2014.
- ^ "Log4j – Overview - Apache Log4j 2". logging.apache.org. June 5, 2016. Retrieved July 3, 2016.
- ^ "Log4j 2 Asynchronous Loggers for Low-Latency Logging - Apache Log4j 2". Logging.apache.org. July 12, 2014. Retrieved July 24, 2014.
- ^ "Disruptor by LMAX-Exchange". Lmax-exchange.github.io. Retrieved July 24, 2014.
- ^ "Level (Apache Log4j 1.2.17 API)". Logging.apache.org. June 9, 2012. Retrieved July 24, 2014.
- ^ "Custom Log Levels". Logging.apache.org. July 12, 2014. Retrieved July 16, 2016.
- ^ "Configuration". Logging.apache.org. July 5, 2016. Retrieved July 16, 2016.
- ^ "Architecture". Logging.apache.org. July 5, 2016. Retrieved July 16, 2016.
- ^ "Appenders". Logging.apache.org. July 5, 2016. Retrieved July 16, 2016.
- ^ "RandomAccessFile". docs.oracle.com. July 28, 2011. Retrieved July 16, 2016.
- ^ "Layouts". Logging.apache.org. July 5, 2016. Retrieved July 16, 2016.
- ^ "GELF". docs.graylog.org. June 8, 2016. Retrieved July 16, 2016.
- ^ "RFC 5424 - The Syslog Protocol". tools.ietf.org. March 1, 2009. Retrieved July 16, 2016.
- ^ "Filters". Logging.apache.org. July 5, 2016. Retrieved July 16, 2016.
- ^ "TTCCLayout (Apache Log4j 1.2.17 API)". Logging.apache.org. June 9, 2012. Retrieved July 24, 2014.
- ^ "Class NDC". Archived from the original on August 20, 2007. Retrieved December 11, 2021.
- ^ "MDC (Apache Log4j 1.2.17 API)". Logging.apache.org. June 9, 2012. Retrieved July 24, 2014.
- ^ "Logging Framework for C Free System Administration software downloads at". Sourceforge.net. Retrieved July 24, 2014.
- ^ "stritti/Log4js - The Logging Framework for JavaScript with no runtime dependencies". GitHub. Retrieved December 11, 2021.
- ^ "a JavaScript logging framework". log4javascript. Retrieved December 11, 2021.
- ^ "Logging JavaScript errors to your server side log". JSNLog. Retrieved December 11, 2021.
- ^ "Apache log4net". Logging.apache.org. Retrieved December 11, 2021.
- ^ Schilli, Mike; Goess, Kevin. "log4perl - log4j for Perl". log4perl. Retrieved December 11, 2021.
- ^ "Apache Logging Services". Apache.org. Retrieved March 11, 2015.
- ^ "tmuth/Logger-A-PL-SQL-Logging-Utility — GitHub". Github.com. Retrieved July 24, 2014.
- ^ "Log4db2 by angoca". Angoca.github.io. Retrieved July 24, 2014.
- ^ "log4cxx - Changelog". logging.apache.org.
- ^ "Log4r Manual". log4r.rubyforge.org. Archived from the original on December 25, 2012. Retrieved April 13, 2017.
- ^ "Security Vulnerability in Minecraft: Java Edition". Minecraft. December 10, 2021.
{{cite web}}
: CS1 maint :url-status (링크) - ^ Goodin, Dan (December 9, 2021). "Zeroday in ubiquitous Log4j tool poses a grave threat to the Internet". Ars Technica. Retrieved December 10, 2021.
- ^ "Worst Apache Log4j RCE Zero day Dropped on Internet". Cyber Kendra. December 9, 2021. Retrieved December 10, 2021.
- ^ a b Mott, Nathaniel (December 10, 2021). "Countless Servers Are Vulnerable to Apache Log4j Zero-Day Exploit". PC Magazine. Retrieved December 10, 2021.
- ^ Newman, Lily Hay (December 10, 2021). "The Internet Is on Fire" – via www.wired.com.
- ^ "Statement from CISA Director Easterly on "Log4j" Vulnerability". CISA. Washington. December 11, 2021.
- ^ "BSI warnt vor Sicherheitslücke" [BSI warns of security vulnerabilities]. Tagesschau (in German). December 12, 2021.
- ^ "Warnstufe Rot: Schwachstelle Log4Shell führt zu extrem kritischer Bedrohungslage" [Red alarm: Log4Shell vulnerability causes extremely critical threat situation]. BSI press service (in German). December 12, 2021.
- ^ "Statement from the Minister of National Defence on Apache Vulnerability and Call to Canadian Organizations to Take Urgent Action". Government of Canada. December 12, 2021.
- ^ "LOG4J2-3198: Log4j2 no longer formats lookups in messages by default". GitHub. December 5, 2021.
- ^ "Restrict LDAP access via JNDI by rgoers · Pull Request #608 · apache/logging-log4j2". GitHub. 2021년 11월 30일 ~ 12월 5일
- ^ "Apache Log4j Security Vulnerabilities". December 6, 2021.
- ^ "LOG4J2-3208: Disable JNDI by default". December 11, 2021. Retrieved December 14, 2021.
- ^ "LOG4J2-3211: Remove support for Lookups in messages". December 13, 2021. Retrieved December 14, 2021.
- ^ "Important Message: Security vulnerability in Java Edition". Minecraft.net. December 10, 2021. Retrieved December 30, 2021.
추가 정보
- Gülcü, Ceki (February 2010), The Complete Log4j Manual (2nd ed.), QOS.ch, p. 204, ISBN 978-2-9700369-0-6
- Gupta, Samudra (June 22, 2005), Pro Apache Log4j (2nd ed.), Apress, p. 224, ISBN 978-1-59059-499-5