Java未写入控制台 [英] Java Not Writing to Console

查看:90
本文介绍了Java未写入控制台的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用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参数:

-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.在实用程序"->"Java首选项"->高级"->"Java控制台"下有一个设置,该设置一旦设置为显示控制台"即可解决此问题.

解决方案

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

更新刚刚测试了确切的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中以验证上述内容.

I'm working on a Java EE web application that will not output anything to the console. It uses log4j, the log4j.properties file is set to output to stdout. However, it is not functioning, no logging is appearing in the console. It turns out that even System.out is not showing up in the console. What could cause this?

I'm running MyEclipse 10.1, log4j-1.2.11, tomcat 5.5.35, java 1.6.0_31.

Per request, here is my .properties file:

### 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

And log handler:

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");
}

}

I use MyEclipse to start and stop. Just point my tomcat install dir. MyEclipse added the following 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

EDIT: Thank you to those who attempted to help. I should have stated in the original question that I am running Mac OS X 10.7.3. There was a setting under Utilities -> Java Preferences -> Advanced -> Java Console that once set to Show Console corrected the issue.

解决方案

In Tomcat your System.out and System.err will go to catalina.out log file. Please check your output there.

UPDATE Having just tested your exact log4j configuration I can confirm that the output is sent to tomcat7-stdout.<date>.log on 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

This log file name would be different for Tomcat 5.5, it should be catalina.out in Linux, and it would have a different name in Windows (so the documentation says, I don't know).

This is the code:

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

UPDATE2 Under Eclipse this type of output should go to Eclipse console, try building your WAR file and deploying it into a standalone Tomcat to verify the above.

这篇关于Java未写入控制台的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆