Java不写入控制台

时间:2012-04-27 13:43:43

标签: java eclipse tomcat logging

我正在开发一个不会向控制台输出任何内容的Java EE Web应用程序。它使用log4j,log4j.properties文件设置为输出到stdout。但是,它无法正常运行,控制台中不会显示任何日志记录。事实证明,甚至System.out也没有出现在控制台中。什么可能导致这种情况?

我正在运行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安装目录。 MyEclipse添加了以下VM args:

-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

编辑: 感谢那些试图帮助的人。我应该在最初的问题中说过我正在运行Mac OS X 10.7.3。在Utilities下有一个设置 - &gt; Java首选项 - &gt;高级 - &gt;曾经设置为Show Console的Java控制台更正了问题。

1 个答案:

答案 0 :(得分:3)

在Tomcat中,您的System.out和System.err将转到catalina.out日志文件。请检查你的输出。

UPDATE 刚刚测试了您的确切log4j配置后,我可以确认输出是否已发送到Tomcat 7 Windows上的tomcat7-stdout.<date>.log

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下,这种类型的输出应该转到Eclipse控制台,尝试构建WAR文件并将其部署到独立的Tomcat中以验证上述内容。