2012-04-27 16 views
1

Я работаю над веб-приложением Java EE, которое ничего не выводит на консоль. Он использует log4j, файл log4j.properties установлен для вывода в stdout. Тем не менее, он не работает, в консоли не появляется запись. Оказывается, даже System.out не появляется в консоли. Что может быть причиной этого?Java не записывается в консоль

Я запускаю MyEclipse 10.1, log4j-1.2.11, tomcat 5.5.35, java 1.6.0_31.

По желанию, здесь подам .properties:

### direct log messages to stdout ### 
# Configure Root Logger 
log4j.rootLogger = DEBUG, stdout 
log4j.logger.org.hibernate = DEBUG, stdout 
#log4j.logger.org.springframework = ERROR, stdout 

# Configure stdout Appender 
log4j.appender.stdout = org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern =%d [%t] %-5p %c - %m%n 

И войти обработчик:

public class LogHandler { 
private static Logger sLog = Logger.getLogger(LogHandler.class); 
public LogHandler(){ 

} 
public void info_toLOG(String msg00) { 
    sLog.info("\n" + msg00 + "\n"); 
} 

public void error_toLOG(Exception e) { 
    sLog.error("\n" + e.getClass() + "\n" 
      + e.getCause() + "\n" 
      + e.getMessage() + "\n" 
      + e.getLocalizedMessage() + "\n" 
      + e.getStackTrace().toString() + "\n"); 
} 

public void warning_toLOG(String msg00) { 
    sLog.warn("\n" + msg00 + "\n"); 
} 

}

Я использую MyEclipse для запуска и остановки. Просто укажите мой tomcat install dir. MyEclipse добавлены следующие VM арг:

-Dcatalina.home="<tomcat dir>" 
-Dcatalina.base="<tomcat dir> " 
-Djava.endorsed.dirs="<tomcat dir>/common/endorsed" 
-Djava.io.tmpdir="<tomcat dir>/temp" 
-Djava.library.path=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin:"<tomcat dir>/bin" 
-Dsun.io.useCanonCaches=false 
-Xmx1024M 

EDIT: Спасибо тем, кто пытался помочь. Я должен был указать в исходном вопросе, что я запускаю Mac OS X 10.7.3. В настройках Utilities -> Java Preferences -> Advanced -> Java Console была установлена ​​настройка, которая после установки в Show Console исправила проблему.

+0

Конфигурация log4j (http://logging.apache.org/log4j/1.2/manual.html) может быть сложной задачей. В типичной настройке есть слушатели, настроенные для обработки определенных категорий сообщений журнала, и каждый слушатель может направлять вывод на различные адресаты (моя терминология, а не log4j). Если вы можете опубликовать свой файл свойств и примерную строку кода Java, который выполняет операцию регистрации, мы можем указать причину проблемы. –

ответ

3

В Tomcat система System.out и System.err перейдут в файл журнала catalina.out. Пожалуйста, проверьте ваш результат.

UPDATE После проверки вашей точной конфигурации log4j я могу подтвердить, что вывод отправлен на tomcat7-stdout.<date>.log на Tomcat 7 Windows. Имя файла

2012-04-27 15:59:47 Commons Daemon procrun stdout initialized 
2012-04-27 15:59:51,955 [http-apr-8080-exec-3] INFO org.apache.log4j.Logger - hey log 
blah 

Этот журнал будет отличаться для Tomcat 5.5, он должен быть в Linux catalina.out, и он будет иметь другое имя в Windows (так говорится в документации, я не знаю).

Это код:

Logger l = Logger.getLogger(Logger.class); 
l.info("hey log"); 
System.out.println("blah"); 

UPDATE2 Под Затмения этот тип вывода должен идти к консоли Eclipse, попробуйте создать свой файл WAR и развернуть его в автономный Tomcat для проверки выше.

+0

Спасибо, но я не вижу файл catalina.out. – Ken

+0

Что находится в каталоге '/logs'? Возможно, я думаю о более ранней версии Tomcat. – maksimov

+0

В моем Tomcat 7 System.out заканчивается в '/logs/tomcat7-stdout. .log'. – maksimov

Смежные вопросы