Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在Google App Engine中查看我的自定义日志_Java_Google App Engine - Fatal编程技术网

Java 无法在Google App Engine中查看我的自定义日志

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

我正在尝试在GAE中做一些简单的登录,尽管我想我一定错过了一些简单的步骤

我已按照这里的说明:

我想在日志中写一条简单的消息,如下所示:

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>