AppEngine - Log4j和Log-Levels

时间:2014-05-15 15:20:42

标签: java google-app-engine logging log4j

我想使用Log4j登录AppEngine。我像这样配置了记录器:

.level = INFO
log4j.rootLogger=DEBUG, stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c{1}:%M:%L - %m%n 

但是记录器然后将所有内容记录到INFO,真正的日志级别就像这样显示内联:(日志级别错误)

enter image description here

有没有办法让真正的日志级别与log4j一起使用,以便日志级别的过滤能够在appengine UI上运行?

编辑:更详细的示例:

所以我记录了这样的错误:

import org.apache.log4j.Logger;
private static Logger logger = Logger.getLogger(PingServlet.class);

logger.error("Database was successfully pinged.");

在Appengine-UI上,它显示为INFO(绿色I)。只有登录文本指示正确的日志级别:

enter image description here

1 个答案:

答案 0 :(得分:0)

GAE Java文档指出,您写入stdout的所有内容都记录为INFO,而stderr则记录为WARNING [1]。您的根记录器正在将所有内容写入stdout。

我不是log4j专家,所以我不知道记录器写入stdout和stderr的方法。一种解决方法是使用两个记录器,一个用于INFO,另一个用于警告。

[1] https://cloud.google.com/appengine/docs/java/requests#Java_Logging