2012-03-07 2 views
2

내 Java 응용 프로그램에 임베디드 tomcat을 사용하고 있습니다. 아래는 내 소스 코드이다. 그러나 Tomcat은 어떤 로그도 생성하지 않습니다.임베디드 Tomcat 로깅을 활성화하는 방법

 embedded = new Embedded(); 
     embedded.setDebug(3); 

     org.apache.catalina.logger.FileLogger embeddedFileLogger = new org.apache.catalina.logger.FileLogger();   
     embeddedFileLogger.setDirectory(tomcatHome+"/log"); 
     embeddedFileLogger.setPrefix("Embedded_log_"); 
     embeddedFileLogger.setSuffix(".txt"); 
     embeddedFileLogger.setTimestamp(true); 
     embeddedFileLogger.setVerbosity(3); 



     //embedded.setLogger(new SystemOutLogger()); 
     engine = embedded.createEngine(); 
     //engine.setLogger(embeddedFileLogger); 
     embeddedFileLogger.setContainer(engine); 
     engine.setDefaultHost("localhost"); 

     host = embedded.createHost("localhost", tomcatHome + "/webapps"); 
     //host.setLogger(embeddedFileLogger); 
     engine.addChild(host); 

     _context = embedded.createContext("", tomcatHome + "/webapps/ROOT"); 
     host.addChild(_context); 

     embedded.addEngine(engine); 

     CoyoteConnector connector = (CoyoteConnector)embedded.createConnector(InetAddress.getByName(ipAddress), port, false);    
        embedded.addConnector(connector); 
     embedded.setLogger(embeddedFileLogger); 
     embedded.start(); 

코드 또는 tomcat 구성을 통해 내장 된 Tomcat 로깅을 활성화하는 방법을 알려주십시오.

답변

2

기본적으로 포함 된 Tomcat은 JDK에서 제공하는 로깅 구성을 사용합니다. 구성을 변경하지 않은 경우 ConsoleHandler 만 구성됩니다. 프로그래밍 방식으로 FileHandler을 추가하려면 루트 로거에 추가 할 수 있습니다. 다음은 메시지를 INFO 수준에 첨부하여 catalina.out 파일에 쓰는 예제입니다. 이것은 Tomcat 6.x 및 7.x에서 작동합니다.

Logger logger = Logger.getLogger(""); 
Handler fileHandler = new FileHandler("catalina.out", true); 
fileHandler.setFormatter(new SimpleFormatter()); 
fileHandler.setLevel(Level.INFO); 
fileHandler.setEncoding("UTF-8"); 
logger.addHandler(fileHandler); 
+0

임베디드 tomcat 인스턴스를 여러 개 만들려면 어떻게해야합니까? 나는 주어진 각 war 파일에 대해 tomcat 인스턴스를 생성하고 배포하는 애플리케이션을 가지고 있지만 각 인스턴스에 대한 출력을 분리하는 방법을 모른다. 너는 어떤 생각을 가지고 있니? 감사 – Jorj

1

나를 위해 이것은 부분적으로 만 작동했습니다.

java.util.logging.Logger logger = java.util.logging.Logger.getLogger("").setLevel(Level.ALL); 

내가 ALL 로그를 표시하고 로깅 수준을 구성 할 수 있도록하고 싶었 :이 하나 더 줄을 추가 필요합니다. 여기에 나를 위해 일한 것입니다 : 당신은 당신의 클래스 경로에있는 바람둥이-포함 로깅 줄리-8.0.15.jar를 포함 할 필요가

public static void main(String[] args) throws Exception { 
    // Tuning log level 
    if (args.length > 0) { 
     Level level = Level.parse(args[0]); 
     java.util.logging.Logger logger = java.util.logging.Logger.getLogger(""); 
     logger.setLevel(level); 
     Handler[] handlers = logger.getHandlers(); 
     Handler handler; 
     if (handlers.length == 1 && handlers[0] instanceof ConsoleHandler) { 
      handler = handlers[0]; 
     } else { 
      handler = new ConsoleHandler(); 
     } 
     handler.setFormatter(new SimpleFormatter()); 
     handler.setLevel(level); 
     handler.setEncoding("UTF-8"); 
     logger.addHandler(handler); 
    } 
    //... some code here 
} 
0

. , Tomcat logging 다음 logging.properties이 페이지를 사용하여 구성에 대한 자세한 내용은

//Loads custom logging configuration located in a properties file named logging.properties 
try (InputStream inputStream = new FileInputStream("logging.properties")) { 
    LogManager.getLogManager().readConfiguration(inputStream); 
    System.out.println("Custom logging configuraton loaded successfully"); 
} catch (Exception exception) { 
    System.err.println ("Custom logging configuration don't found using default system logging configuration."); 
} 

:

은 내가 logging.properties 파일을로드하고 외부 일반 자바 로깅 방법을 사용하여 로깅을 구성하려면이 코드를 사용 java.util.logging.FileHandler

: 또한 org.apache.juli.FileHandler

당신은 또한 줄리 aproach의와 호환되는 java.util.logging.FileHandler를 사용할 수있는 다른 고급 구성 옵션이 있습니다

log4j를 사용하기위한 다른 항아리가 있지만 나에게 이것은 정상적으로 작동합니다. 참고 : Tomcat 8.0.15 내장을 사용했지만 새 버전이 있습니다.

관련 문제