Java 无法在Google App Engine中查看我的自定义日志
我正在尝试在GAE中做一些简单的登录,尽管我想我一定错过了一些简单的步骤 我已按照这里的说明: 我想在日志中写一条简单的消息,如下所示:Java 无法在Google App Engine中查看我的自定义日志,java,google-app-engine,Java,Google App Engine,我正在尝试在GAE中做一些简单的登录,尽管我想我一定错过了一些简单的步骤 我已按照这里的说明: 我想在日志中写一条简单的消息,如下所示: public class InsertServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final Logger log = Logger.getLogger(InsertServlet.class.getN
public class InsertServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final Logger log = Logger.getLogger(InsertServlet.class.getName());
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
log.info("Handled GET request - custom message");
resp.setContentType("text/plain");
resp.getWriter().println("HELLO");
}
}
如果我使用web浏览器访问我的应用程序,我可以看到它正在工作,并在浏览器中获取HELLO消息
然而,在此之后,如果我访问控制台中的日志,我可以看到它正在记录事件,但我在任何地方都看不到我的消息
我选择了Show:All Requests,但这是我访问后在日志中看到的全部内容:
012-08-19 13:34:56.488/插入200 2922ms 0kb Mozilla/5.0 Windows NT
6.1; WOW64;rv:14.0 Gecko/20100101 Firefox/14.0.1
2602:306:ce97:de40:8dbd:ace7:14c3:89e2---[19/Aug/2012:13:34:56]
-0700]获取/插入HTTP/1.120052-Mozilla/5.0windowsnt6.1;WOW64;rv:14.0 Gecko/20100101 Firefox/14.0.1
karwosts-helloworld.appspot.com ms=2923 cpu\u ms=1213 api\u cpu\u ms=0
cpm_usd=0.000006装货_请求=1
实例=00C61B17CF339FA358DC217B91A9F45B8C30F
I 2012-08-19 13:34:56.487
此请求导致启动应用程序的新进程,
从而使您的应用程序代码第一次被加载。
因此,此请求可能比典型的
请求您的申请
Logging.Properties只有一行:
.level = WARNING
appengine-web.xml
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>karwosts-helloworld</application>
<version>1</version>
<threadsafe>true</threadsafe>
<!-- Configure java.util.logging -->
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
</system-properties>
</appengine-web-app>
我的自定义log.info字符串在哪里?我看的地方不对吗?您不应该检查所有请求,而应该检查严重性最低的日志,并从下拉列表中选择信息。第一眼,我想说,当您在logging.properties文件中使用此设置时:
.level = WARNING
而且,当您登录代码时,您没有指定任何级别,将使用默认级别,我猜这肯定不是“警告”^^
请使用此行指定日志记录级别:
log.info(msg);
/* which is same as */
log.log(Level.INFO, msg);
因此,在您的示例中,结果是您只在“INFO”级别进行日志记录,但您的配置文件要求在警告级别及更高级别进行日志记录。由于“信息”级别低于“警告”,它们将从您的日志文件中丢弃,并且不会显示在服务器的日志中
我建议改为尝试这种方法,它强制您指定日志记录的级别
import java.util.logging.Level;
import java.util.logging.Logger;
/* ... */
log.log(Level.INFO, "a info msg"); //info
log.log(Level.WARNING, "a warning msg"); //warning
log.log(Level.FINEST, "a fine(st) msg"); //debug (as finest)
之后,可以使用logging.properties文件为所需的类设置所需的日志记录级别:
# Set the default logging level for all loggers to WARNING
.level = WARNING
# Set level for your app
oed.server.level = INFO
oed.server.data.datastore.myInjector.level = FINEST
编辑2:
在客户端运行时,此日志记录配置没有影响。当您想在GWT中记录消息时,有以下GWT.logmessage;,但不能指定级别
这并不完全正确,这取决于your-app.gwt.xml文件中的配置。
有关详细信息,请访问。我觉得它很有用,而且做得很好。尽管如此,在一个螺母壳中,GWT中有5-6个左右的默认记录器;所有这些都可以通过它们的处理程序在*.gwt.xml中进行配置,也可以实用地进行配置。
在那个地方呆了太久之后。。。我选择从客户端远程登录到服务器以享受logging.properties的使用,以下是使用gwt.xml时的配置:
祝你好运 嗯,看起来一样。我只看到系统信息消息,但没有看到我自己的log.info消息。我想您应该向我们显示logging.properties文件和appengine-web.xml文件条目。也许有人会发现问题。啊,太好了,我没有意识到logging.properties.level语句充当了过滤器。现在很好,谢谢!你是对的,蒂姆,他们是对的。此外,path before.level是一个类路径,它是用作文件管理器的实际部分。默认情况下,.level没有路径,因此它与regex中的每个路径都匹配,如*。或者,oed.server.level=FINE,那么路径“oed.server”下的所有类的级别都将设置为“FINE”。答案非常全面,所以我可能会在不创建新问题的情况下获得另一个。。。如何为每个应用程序版本设置不同的日志级别?我的意思是,我已经在谷歌的云上安装了一些应用程序,并且我已经设置了实时版本和临时版本。现在,我不需要来自live的信息,但当我尝试在登台版本上进行一些简单的调试时,它会很有用……令人费解的是,GWT与从servlet进行日志记录的关系还不清楚
<!-- Logging configuration -->
<inherits name="com.google.gwt.logging.Logging"/>
<set-property name="gwt.logging.logLevel" value="INFO"/> <!-- # To change the default logLevel -->
<set-property name="gwt.logging.enabled" value="TRUE"/>
<set-property name="gwt.logging.simpleRemoteHandler" value="ENABLED" /> <!-- Remote logging (linked with servlet) -->
<set-property name="gwt.logging.popupHandler" value="DISABLED" />
<set-property name="gwt.logging.developmentModeHandler" value="ENABLED" />
<set-property name="gwt.logging.systemHandler" value="ENABLED" />
<set-property name="gwt.logging.firebugHandler" value="DISABLED" />
<set-property name="gwt.logging.consoleHandler" value="ENABLED"/>
<servlet>
<servlet-name>remoteLogging</servlet-name>
<servlet-class>com.google.gwt.logging.server.RemoteLoggingServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>remoteLogging</servlet-name>
<url-pattern>/your-app-name/remote_logging</url-pattern>
</servlet-mapping>