Tim*_*Tim 6 java google-app-engine
我正在尝试在GAE中进行一些简单的日志记录,尽管我认为我必须错过一些简单的步骤.
我已按照此处的说明操作:https://developers.google.com/appengine/docs/java/runtime#Logging
我希望在日志中写一条简单的消息,如下所示:
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");
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用网络浏览器访问我的应用程序,我可以看到它正在工作(在浏览器中获取"HELLO"消息).
但是在此之后,如果我访问控制台中的日志,我可以看到它正在记录事件,但我没有在任何地方看到我的消息.
我选择了"显示:所有请求",但这是我访问后在日志中看到的所有内容:
012-08-19 13:34:56.488/insert 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]"GET/insert HTTP/1.1"200 52 - "Mozilla/5.0(Windows NT) 6.1; WOW64; rv:14.0)Gecko/20100101 Firefox/14.0.1""karwosts-helloworld.appspot.com"ms = 2923 cpu_ms = 1213 api_cpu_ms = 0 cpm_usd = 0.000006 loading_request = 1 instance = 00c61b117cf339fa358dc217b91a9f45b8c30f
I 2012-08-19 13:34:56.487
此请求导致为您的应用程序启动新进程,从而导致您的应用程序代码首次加载.因此,此请求可能需要更长时间,并且比应用程序的典型请求使用更多CPU.
Logging.Properties(只有一行):
.level = WARNING
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
我的自定义log.info字符串在哪里?我不是在找正确的地方吗?
乍一看,我会说,当您在"logging.properties"文件中使用此设置时:
.level = WARNING
Run Code Online (Sandbox Code Playgroud)
并且,您(在登录代码时不指定任何级别,将使用默认级别,这肯定不是'警告'(我猜想INFO ^^)
确实使用此行指定日志记录级别:
log.info(msg);
/* which is same as */
log.log(Level.INFO, msg);
Run Code Online (Sandbox Code Playgroud)
因此,结果是您只在"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)
Run Code Online (Sandbox Code Playgroud)
之后,您可以使用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
Run Code Online (Sandbox Code Playgroud)
Edit2:
在客户端运行时,此日志记录配置没有任何影响.当你想在GWT中记录消息时,有这个GWT.log(message);,但是不能指定级别.
这不完全正确,这取决于your-app.gwt.xml文件中的配置.所有细节都可以在google dev guilde logging上找到.我发现它非常有用且做得很好.不过,在坚果壳中,GWT中有各种默认记录器(大约5-6个); 所有这些都可以*.gwt.xml通过他们的处理程序进行配置(或者可以通过实际操作完成).让侵入式弹出式记录器在那里待了太久...我选择远程登录从客户端到服务器享受使用logging.properties,这里是使用时的配置gwt.xml:
<!-- 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"/>
Run Code Online (Sandbox Code Playgroud)
如果您使用此设置,请不要忘记web.xml使用servlet定义来配置以处理日志记录(遗憾的是,文档中没有提供):
<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>
Run Code Online (Sandbox Code Playgroud)
祝好运 !
| 归档时间: |
|
| 查看次数: |
1774 次 |
| 最近记录: |