简体   繁体   English

AppEngine-Log4j和日志级别

[英]AppEngine - Log4j and Log-Levels

I want to use Log4j for my logging on AppEngine. 我想使用Log4j登录AppEngine。 I configured the logger like this: 我这样配置记录器:

.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 

But the logger then logs everything to INFO and the real log level is just shown inline like this: (Log level error) 但是记录器随后将所有内容都记录到INFO中,并且实际的日志级别仅以如下方式内联显示:(日志级别错误)

在此处输入图片说明

Is there a way to get the real log levels to work with log4j so that filtering on log levels works on the appengine UI? 是否有一种方法可以使真实的日志级别与log4j配合使用,从而使日志级别的过滤在appengine UI上起作用?

Edit: More detailed example: 编辑:更详细的示例:

So I log an error like this: 所以我记录了这样的错误:

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

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

And on the Appengine-UI, it shows up as an INFO (the green I). 在Appengine-UI上,它显示为INFO(绿色I)。 Only the loggin text indicates the correct log level: 仅登录文本指示正确的日志级别:

在此处输入图片说明

The GAE Java documentation states that everything you write to stdout is logged as INFO and to stderr is WARNING [1]. GAE Java文档指出,您写到stdout的所有内容都将记录为INFO,写到stderr的内容是警告[1]。 Your root logger is writing everything to stdout. 您的root记录器正在将所有内容写入stdout。

I'm not a log4j expert, so I don't know of a way for a logger to write to both stdout and stderr. 我不是log4j专家,所以我不知道记录器可以同时写入stdout和stderr的方法。 One workaround is to use two loggers, one for INFO and another one for WARNING. 一种解决方法是使用两个记录器,一个用于INFO,另一个用于WARNING。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM