이 글의 문맥을 분석하여 이글루스에 있는 많은 글 중에서 관련성이 높은 글을 자동으로 검색해 낸 결과입니다.
제갈장비
dojeun.egloos.com
이글루스 | 로그인

라면 한그릇 드세요.. ㅋㅋ
by 제갈장비
카테고리
전체
제갈장비-Linux
제갈장비-TOMCAT
제갈장비-JAVA
--------------------
문서-Linux
문서-Powerbuilder
문서-JAVA
문서-ASP
문서-하드웨어
문서-EDPS
문서-MSSQL
--------------------
TIP-JAVA
TIP-Perl
TIP-ASP
TIP-Powerbuilder 01
TIP-Javascript
TIP-Excel
TIP-XML
TIP-MSAccess
TIP-PostgreSql
TIP-Windows
TIP-Linux
TIP-HTML
TIP-TOMCAT
--------------------
ETC
Secret
Util-Japan
미분류
최근 등록된 덧글
잘읽어 보았습니다. 그런..
by 이윤철 at 11/07
1000 666
by qhrlfeh77 at 05/21
123
by qhrlfeh77 at 05/21

by qhrlfeh77 at 05/21
감사합니다!! HashSet..
by 세레네이 at 04/06
찾고 있었던 자료인데 ..
by 나그네 at 01/09
감사합니다. 잘 보았습..
by 졸면죽는다 at 10/28
좋은 정보 정말 감사합니..
by 강성훈 at 10/22
좋은글 퍼가겠습니다.
by 정의진 at 09/29
이제야 봤습니다. iText..
by 제갈장비 at 08/09
이글루 파인더
Powered by egloos
rss

skin by 이글루스
2006년 10월 23일
[펌]톰캣에서 log4j 실행시 에러 바로 잡기
출처 : http://cafe.naver.com/devmaster.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=30


일반적으로 웹 문서를 찾아보면 log4j-1.2.13.jar를 클래스 패스에 추가 시킨 후

/WEB-INF/classes아래 log4j.properties파일을 넣으면 간단하게 실행이 된다고 써 있다.

 

그러나 톰캣을 실행 시킬 경우 아래와 같은 문구가 뜨면서 로깅이 안되는 경우가 자주 발생한다.

 

log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester).
log4j:WARN Please initialize the log4j system properly.

 

 

이것은 log4j.properties를 찾지 못해서 초기화가 안되어 나는 메시지이다.

물론 아래와 같이 콘솔에만 출력하는 경우에는 별로 문제 될 것이 없다.

 

----------------------------------------------------------------------------------------------------

import org.apache.log4j.Logger; 
import org.apache.log4j.BasicConfigurator; 
public class SimpleLog { 
// Logger 클래스의 인스턴스를 받아온다. 
 static Logger logger = Logger.getLogger(SimpleLog.class); 
 public SimpleLog() {} 
 public static void main(String[] args) { 
 /* 콘솔로 로그 출력 위한 간단한 설정, 이 설정이 없다면 경고 메세지가 출력되면서 실행이 중단된다.*/ 
 BasicConfigurator.configure(); 
 logger.debug("Hello log4j."); 
 logger.info("Hello log4j."); 
 logger.warn("Hello log4j."); 
 logger.error("Hello log4j."); 
 logger.fatal("Hello log4j."); 
 //loger.log( Level.DEBUG , "debug") 와 동일하다. 
 } 
} 

 

----------------------------------------------------------------------------------------------------------------

그러나 파일에 출력하면 서 콘솔에 출력하려면 문제가 발생한다.

간단하게 해결하는 방법은 properties파일을 톰캣이 실행되는 /bin 아래 두는 것이다.

 

그러나 좀더 우아하게 해결하려면 초기화 서블릿을 만들면 된다.

 

=================================================================================================================

 

package com.foo;

 

import org.apache.log4j.PropertyConfigurator;


import javax.servlet.http.HttpServlet;


import javax.servlet.http.HttpServletRequest;


import javax.servlet.http.HttpServletResponse;


import java.io.PrintWriter;


import java.io.IOException;

 

 

public class Log4jInit extends HttpServlet {

 

  public  void init() {


     String prefix =  getServletContext().getRealPath("/");


     String file = getInitParameter("log4j-init-file");


     // if the log4j-init-file is not set, then no point in trying


      if(file != null) {


       PropertyConfigurator.configure(prefix+file);


      }


  }

 

  public  void doGet(HttpServletRequest req, HttpServletResponse res) {


  }


}

===========================================================================================================

그리고 아래 내용을 web.xml에 추가 시킨다.

=============================================================================================================

 

 <servlet>
     <servlet-name>log4j-init</servlet-name>
     <servlet-class>com.foo.Log4jInit</servlet-class>

     <init-param>
       <param-name>log4j-init-file</param-name>
       <param-value>WEB-INF/classes/log4j.properties</param-value>
     </init-param>

     <load-on-startup>1</load-on-startup>
 </servlet>


===============================================================================================================

 

 

 

 

그리고 다음과 같이 간단하 해 주면 파일과 콘솔에 떨어지는 로그를 볼 수 있다.

=======================================================================================================

 

import org.apache.log4j.Logger;

public class CBselectordertot {

 

    private static Logger logger = Logger.getLogger(ip001Impl.class);

 

    public ipcdOut[] getSelectIpcd(String kind,String wherecond){

        ......

        ......

        logger.info("getSelect_ipcd  query = "+query);

        ........

 

        ...........

    }

}

 

==================================================================================================   

 

 

 

또 하나의 경우...

코바 서버 같은 것을 구동 시킬경우 로깅을 하기 위해서는 다음과 같이 JVM args를 넣어줘야 한다.(톰캣과는 별개로)

 

**vizibroker에서 코바 서버구동 예제

vbj -Dlog4j.configuration=file:d:\ipams\WEB-INF\classes\log4j.properties ip002Server

 

 

properties예제는 파일에 첨부 했다.

첨부파일 : log4j.properties

원하는 디렉토리에 떨어뜨리는 것인데 이대로 사용해도 훌륭하다.

# by 제갈장비 | 2006/10/23 18:30 | TIP-TOMCAT | 덧글(0)

:         :

:

비공개 덧글

◀ 이전 페이지 다음 페이지 ▶

이글루링크 추가하기
()을(를)
이글루링크로 추가하시겠습니까? 추가하시려면 그룹선택을 하세요.
(그룹선택 하지 않는 경우, 최상단 목록에 추가됩니다.)
그룹선택 :
이글루링크 취소