JAVA 프로젝트에서 LOG4J의 사용에 대한 간단한 설명
// output1.txt
//////////////////////////////
// DEBUG - Here is some DEBUG
// INFO - Here is some INFO
// WARN - Here is some WARN
// ERROR - Here is some ERROR
// FATAL - Here is some FATAL
//////////////////////////////
package hunnu.sanha.test;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.SimpleLayout;
import org.apache.log4j.FileAppender;
public class Simpandfile {
static Logger logger = Logger.getLogger(Simpandfile.class);
public static void main(String args[]) {
SimpleLayout layout = new SimpleLayout();
FileAppender appender = null;
try {
appender = new FileAppender(layout,"output1.txt",false);
} catch(Exception e) {}
logger.addAppender(appender);
logger.setLevel((Level) Level.);
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}
// output2.html
package hunnu.sanha.test;
import java.io.*;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.HTMLLayout;
import org.apache.log4j.WriterAppender;
public class Htmlandwrite {
static Logger logger = Logger.getLogger(Htmlandwrite.class);
public static void main(String args[]) {
HTMLLayout layout = new HTMLLayout();
WriterAppender appender = null;
try {
FileOutputStream output = new FileOutputStream("output2.html");
appender = new WriterAppender(layout,output);
} catch(Exception e) {}
logger.addAppender(appender);
logger.setLevel((Level) Level.);
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////
Milliseconds since program start: 0
Classname of caller: hunnu.sanha.test.Consandpatt
Date in ISO8601 format: 2008-07-29 11:02:30,578
Location of log event: hunnu.sanha.test.Consandpatt.main(Consandpatt.java:20)
Message: Here is some DEBUG
Milliseconds since program start: 15
Classname of caller: hunnu.sanha.test.Consandpatt
Date in ISO8601 format: 2008-07-29 11:02:30,593
Location of log event: hunnu.sanha.test.Consandpatt.main(Consandpatt.java:21)
Message: Here is some INFO
Milliseconds since program start: 15
Classname of caller: hunnu.sanha.test.Consandpatt
Date in ISO8601 format: 2008-07-29 11:02:30,593
Location of log event: hunnu.sanha.test.Consandpatt.main(Consandpatt.java:22)
Message: Here is some WARN
Milliseconds since program start: 15
Classname of caller: hunnu.sanha.test.Consandpatt
Date in ISO8601 format: 2008-07-29 11:02:30,593
Location of log event: hunnu.sanha.test.Consandpatt.main(Consandpatt.java:23)
Message: Here is some ERROR
Milliseconds since program start: 15
Classname of caller: hunnu.sanha.test.Consandpatt
Date in ISO8601 format: 2008-07-29 11:02:30,593
Location of log event: hunnu.sanha.test.Consandpatt.main(Consandpatt.java:24)
Message: Here is some FATAL
///////////////////////////////////////////////////////
package hunnu.sanha.test;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.ConsoleAppender;
public class Consandpatt {
static Logger logger = Logger.getLogger(Consandpatt.class);
public static void main(String args[]) {
// Note, %n is newline
String pattern = "Milliseconds since program start: %r %n";
pattern += "Classname of caller: %C %n";
pattern += "Date in ISO8601 format: %d{ISO8601} %n";
pattern += "Location of log event: %l %n";
pattern += "Message: %m %n %n";
PatternLayout layout = new PatternLayout(pattern);
ConsoleAppender appender = new ConsoleAppender(layout);
logger.addAppender(appender);
logger.setLevel((Level) Level.);
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}
둘째, 프로필 사용(모두 프로젝트 폴더 아래에 직접)
//xmllog4jconfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="appender" class="org.apache.log4j.FileAppender">
<param name="File" value="Indentify-Log.txt"/>
<param name="Append" value="false"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %p - %m%n"/>
</layout>
</appender>
<root>
<priority value ="debug"/>
<appender-ref ref="appender"/>
</root>
</log4j:configuration>
//Externalxmltest.java
package hunnu.sanha.external;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
public class Externalxmltest {
static Logger logger = Logger.getLogger(Externalxmltest.class);
public static void main(String args[]) {
DOMConfigurator.configure("xmllog4jconfig.xml");
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}
// Indentify-Log.txt
2008-07-29 10:48:11,375 [main] DEBUG - Here is some DEBUG
2008-07-29 10:48:11,375 [main] INFO - Here is some INFO
2008-07-29 10:48:11,375 [main] WARN - Here is some WARN
2008-07-29 10:48:11,375 [main] ERROR - Here is some ERROR
2008-07-29 10:48:11,375 [main] FATAL - Here is some FATAL
// plainlog4jconfig.txt
# initialise root logger with level DEBUG and call it BLAH
log4j.rootLogger=DEBUG, BLAH
# add a ConsoleAppender to the logger BLAH
log4j.appender.BLAH=org.apache.log4j.ConsoleAppender
# set set that layout to be SimpleLayout
log4j.appender.BLAH.layout=org.apache.log4j.SimpleLayout
//Externalplaintest.java
package hunnu.sanha.external;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class Externalplaintest {
static Logger logger = Logger.getLogger(Externalplaintest.class);
public static void main(String args[]) {
PropertyConfigurator.configure("plainlog4jconfig.txt");
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}
//
DEBUG - Here is some DEBUG
INFO - Here is some INFO
WARN - Here is some WARN
ERROR - Here is some ERROR
FATAL - Here is some FATAL
추가:2.1.로그 정보의 우선 순위
OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL 또는 사용자가 정의한 레벨로 나뉩니다.
Log4j는 우선 순위가 높은 단계부터 낮은 단계까지 4단계만 사용하도록 권장합니다. 각각 ERROR, WARN, INFO, DEBUG입니다.여기에 정의된 단계를 통해 응용 프로그램의 로그 정보의 스위치를 제어할 수 있습니다.
만약 한 단계가 q인 Logger에서 p 단계의 로그 요청이 발생한다면, p>=q가 발생하면 요청이 사용됩니다.이것은 Log4j의 핵심 원칙이다.
예를 들어 여기서 INFO 레벨을 정의하면 응용 프로그램의 모든 DEBUG 레벨의 로그 정보가 인쇄되지 않습니다.
2.2.출력 소스 사용
로그 요청을 사용할 수 있거나 비활성화할 수 있는 기능은 Log4j의 일부분에 불과합니다.Log4j는 로그 요청을 여러 개의 출력 소스로 출력할 수 있도록 합니다.Log4j로 말하면 출력 원본을 Appender라고 부른다.
Appender는 console(콘솔), files(파일), GUI components(그래픽 구성 요소), remote socket servers(socket 서비스), JMS(java 정보 서비스), NT 이벤트 로그(NT의 이벤트 로그), and remote UNIX Syslog daemons(원격 UNIX의 백그라운드 로그 서비스)를 포함한다.그것도 비동기적인 기록을 할 수 있다.
logger는 하나 이상의 appender를 설정할 수 있습니다.
addAppender 방법으로 appender를 지정한 logger에 추가합니다.주어진 로그에 대한 모든 로그 요청은 이 로그의 모든 appender와 이 로그의 아버지 로그의 appender에 전송됩니다.
2.2.1. ConsoleAppender
ConsoleAppender를 사용하면 로그 정보가 Console에 기록됩니다.효과는 정보를 시스템에 직접 인쇄하는 것과 같다.아웃이야.
2.2.2. FileAppender
FileAppender를 사용하면 로그 정보가 지정된 파일에 기록됩니다.이것은 비교적 자주 사용하는 상황일 것이다.
따라서 프로필에서log가 출력하는 파일 이름을 지정해야 합니다.다음 설정은 로그 파일의 이름을 dglog로 지정합니다.txt
log4j.appender.A2.File=dglog.txt
A2를 특정 구성의 Appender 별칭으로 대체합니다.
2.2.3. DailyRollingAppender
File Appender를 사용하면 로그 정보를 파일에 출력할 수 있지만, 파일이 너무 커서 읽기가 불편합니다.Daily Rolling Appender를 사용할 수 있습니다.Daily Rolling Appender는 로그 정보를 날짜별로 구분된 파일로 내보낼 수 있습니다.프로필은 매일 로그 파일을 생성합니다. 로그 파일마다 그날의 로그 정보만 기록합니다.
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.file=dglog
log4j.appender.A2.DatePattern='.'yyyy-MM-dd
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern= %5r %-5p %c{2} - %m%n
2.2.4. org.apache.log4j.RollingFileAppender
파일 크기가 지정된 크기에 도달하면 새 파일이 생성됩니다.
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File= ../logs/dglog.log
# Control the maximum log file size
log4j.appender.R.MaxFileSize=100KB
# Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
이 프로필은 출력 소스 R을 지정합니다. 회전 로그 파일입니다.최대 파일은 100KB이며, 로그 파일이 최대 크기에 도달하면 Log4J가 자동으로 example을 실행합니다.log에서 dglog로 이름을 바꿉니다.log.1, 그리고 새로운 dglog를 재건합니다.log 파일, 순서대로 회전합니다.
2.2.5. org.apache.log4j.WriterAppender
로그 정보를 흐름 형식으로 지정한 곳으로 보냅니다.
2.3.Layout 구성
Layout은 log 정보 출력의 스타일을 지정합니다.
2.3.1.레이아웃 스타일
org.apache.log4j.HTMLLayout(HTML 테이블로 레이아웃),
org.apache.log4j.PatternLayout(배치 모드를 유연하게 지정할 수 있음),
org.apache.log4j.SimpleLayout(로그 정보의 수준 및 정보 문자열 포함),
org.apache.log4j.TTCCLayout(로그 생성 시간, 스레드, 카테고리 등 정보 포함)
2.3.2.형식
% m 출력 코드에 지정된 메시지
%p 출력 우선 순위, 즉 DEBUG, INFO, WARN, ERROR, FATAL
%r 이 로그 정보를 출력하는 데 소모되는 밀리초
% c 출력에 속하는 클래스, 통상적으로 해당 클래스의 전체 이름입니다.
% t 출력이 로그 이벤트를 생성하는 스레드 이름
%n은 Windows 플랫폼은 "rn", Unix 플랫폼은 "n"으로 리턴 문자를 내보냅니다.
% d 출력 로그 시간의 날짜나 시간, 기본 형식은 ISO8601이며, 그 다음에 형식을 지정할 수도 있습니다. 예를 들어%d {yyy MMM dd HH:mm:ss, SSS}, 출력 유사: 2002년 10월 18일 22:10:28921
% l 출력 로그 이벤트의 발생 위치, 클래스 이름, 발생한 루틴, 코드에 있는 줄 수를 포함합니다.예: Testlog4.main(Test Log4.java:10)
2.3.3.예제
예1: 날짜와 로그 정보 표시
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %m%n
인쇄된 정보는 다음과 같습니다.
2002-11-12 11:49:42,866 SELECT * FROM Role WHERE 1=1 order by createDate desc
예2: 날짜, 로그 발생 장소와 로그 정보를 표시합니다.
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %l "#"%m%n
2002-11-12 11:51:46,313 cn.net.unet.weboa.system.dao.RoleDAO.select(RoleDAO.java:409) "#"
SELECT * FROM Role WHERE 1=1 order by createDate desc
예3:log 레벨, 시간, 호출 방법,log 정보 표시
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS}
method:%l%n%m%n
log 정보:
[DEBUG] 2002-11-12 12:00:57,376
method:cn.net.unet.weboa.system.dao.RoleDAO.select(RoleDAO.java:409)
SELECT * FROM Role WHERE 1=1 order by createDate desc
2.4.구성 파일의 예:
log4j.rootLogger=DEBUG
# DAO 레이어 로그를 DAOLOG, allLog에 기록
log4j.logger.DAO=DEBUG,A2,A4
# BusinessLog, allLog에 논리적 레이어 로그 기록
log4j.logger.Businesslog=DEBUG,A3,A4
#A1-화면에 인쇄
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-5p [%t] %37c %3x - %m%n
#A2- - 파일 DAOLOG에 인쇄 - DAO 레이어 전용 서비스
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.file=DAOLog
log4j.appender.A2.DatePattern='.'yyyy-MM-dd
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS}
method:%l%n%m%n
#A3-파일 BusinessLog에 인쇄-논리적 레이어 서비스 로그 정보 전문 기록
log4j.appender.A3=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A3.file=BusinessLog
log4j.appender.A3.DatePattern='.'yyyy-MM-dd
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS}
method:%l%n%m%n
#A4 - 파일 alllog에 인쇄 - 모든 log 정보 기록
log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A4.file=alllog
log4j.appender.A4.DatePattern='.'yyyy-MM-dd
log4j.appender.A4.layout=org.apache.log4j.PatternLayout
log4j.appender.A4.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS}
method:%l%n%m%n
이상의 이 간단한 이야기는 JAVA 프로젝트에서 LOG4J의 사용은 바로 편집자가 여러분에게 공유한 모든 내용입니다. 여러분께 참고가 되었으면 좋겠습니다. 저희도 많이 사랑해 주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.