본문 바로가기

log4j

[Log4j] Log4j 세팅 참조

출처 얼리뉴스 | 얼리맨
원본 http://blog.naver.com/napple/38214697
TestServlet.java



import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class TestServlet extends HttpServlet {


static Logger logger = Logger.getLogger(TestServlet.class);



public void init(ServletConfig config) throws ServletException {
super.init(config);
}



public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

try {
...

logger.info("Hellow World~");

...

} catch (Exception e) {
logger.error("Error at TestServlet", e);
}
}
}

////////////////////////////////////


① 프로그램에서 설정
<%@ page contentType="text/html;charset=MS949"
import="org.apache.log4j.*,java.io.* "
%>

<%!
static Logger logger = Logger.getLogger("log4j.jsp");
%>

<%
String layout = "%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n";
String logfilename = "DailyLog.log";
String datePattern = ".yyyy-MM-dd ";

PatternLayout patternlayout = new PatternLayout(layout);
DailyRollingFileAppender appender = new DailyRollingFileAppender(patternlayout, logfilename, datePattern);
logger.addAppender(appender);
logger.setLevel(Level.INFO);
logger.fatal("fatal!!");
%>




② property 파일에 설정
log4j.properties를 만들어 /WEB-INF/classes 밑에 놓으세요





log4j.rootLogger=INFO, stdout, rolling

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n

log4j.appender.rolling=org.apache.log4j.DailyRollingFileAppender

log4j.appender.rolling.File=output.log

log4j.appender.rolling.Append=true

log4j.appender.rolling.DatePattern='.'yyyy-MM-dd

log4j.appender.rolling.layout=org.apache.log4j.PatternLayout

log4j.appender.rolling.layout.ConversionPattern=%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n

/////////////////////////////////

[Struts] 무지막지한 Digester의 로그 메시지 막기..

스트럿츠에 Log4J로 로깅을 하고, Log 레벨을 DEBUG로 지정하면 해당 웹 컨텍스트를 포함하고 있는 톰캣 혹은 WAS를 실행할 때마다 엄청난 Digester(스트럿츠가 사용하는 XML 설정 파일 파싱 라이브러리)의 로그에 질려버리게 된다.

그럴때는 스트럿츠 웹 컨텍스트의 log4.properties에 다음을 살짝 추가해준다.


# Remove org.apache.* logs
log4j.logger.org.apache=WARN


물론 로그 레벨은 원하는 대로 바꿔도 된다.

위와 같이 할 경우 저 로그 레벨은 모든 org.apache 패키지 이하의 클래스들의 로깅에 다 적용된다.
특정 아파치 프로젝트의 로깅만 막고 싶다면 그 프로젝트의 패키지명을 지정하면 된다.
예를들면 스트럿츠의 로깅을 막고 싶으면 "log4j.logger.org.apache.struts=WARN" 하는 식으로 바꾼다.


/////////////////////////////////////

// 로거 임포트하기
import org.apache.log4j.Logger;

public class ClassName {
/** Log4J 로거 얻기 */
private Logger log = Logger.getLogger(ClassName.class);
//혹은 private Logger log = Logger.getLogger(this.class);
public void method() {

if (log.isDebugEnabled()) {
log.debug("디버깅용 메시지");
}
log.info("정보를 남기기위한 메시지");

try {
//어쩌구 저쩌구 실행...
} catch (Exception ex) {
//로그에 예외 메시지도 함께 남기기
log.error("예외가 발생했어요~~", ex);
}
}
}

//////////////////////////////////

log4j.rootLogger = DEBUG, stdout, dailyfile

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p (%F[%M]:%L) [%d] - %m%n

log4j.appender.dailyfile.Threshold = DEBUG
log4j.appender.dailyfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyfile.File = logfile.log
log4j.appender.dailyfile.layout = org.apache.log4j.PatternLayout
log4j.appender.dailyfile.layout.ConversionPattern=%5p (%F[%M]:%L) [%d] - %m%n