20
20
import com .google .appengine .api .log .LogServiceFactory ;
21
21
import com .google .appengine .api .log .RequestLogs ;
22
22
23
+ import org .joda .time .DateTime ;
24
+
23
25
import java .io .IOException ;
24
26
import java .io .PrintWriter ;
25
- import java .util .Calendar ;
26
27
27
28
import javax .servlet .http .HttpServlet ;
28
29
import javax .servlet .http .HttpServletRequest ;
33
34
// a time, using a Next link to cycle through to the next 5.
34
35
public class LogsServlet extends HttpServlet {
35
36
@ Override
36
- public void doGet (HttpServletRequest req , HttpServletResponse resp )
37
+ public void doGet (HttpServletRequest req , HttpServletResponse resp )
37
38
throws IOException {
38
39
39
40
resp .setContentType ("text/html" );
40
41
PrintWriter writer = resp .getWriter ();
42
+ writer .println ("<!DOCTYPE html>" );
43
+ writer .println ("<meta charset=\" utf-8\" >" );
44
+ writer .println ("<title>App Engine Logs Sample</title>" );
45
+
41
46
// We use this to break out of our iteration loop, limiting record
42
47
// display to 5 request logs at a time.
43
48
int limit = 5 ;
@@ -60,38 +65,33 @@ public void doGet(HttpServletRequest req, HttpServletResponse resp)
60
65
61
66
// Display a few properties of each request log.
62
67
for (RequestLogs record : LogServiceFactory .getLogService ().fetch (query )) {
63
- writer .println ("<br />REQUEST LOG <br />" );
64
- Calendar cal = Calendar .getInstance ();
65
- cal .setTimeInMillis (record .getStartTimeUsec () / 1000 );
66
-
67
- writer .println ("IP: " + record .getIp () + "<br />" );
68
- writer .println ("Method: " + record .getMethod () + "<br />" );
69
- writer .println ("Resource " + record .getResource () + "<br />" );
70
- writer .println (String .format ("<br />Date: %s" , cal .getTime ().toString ()));
68
+ writer .println ("<br>REQUEST LOG <br>" );
69
+ DateTime reqTime = new DateTime (record .getStartTimeUsec () / 1000 );
70
+ writer .println ("IP: " + record .getIp () + "<br>" );
71
+ writer .println ("Method: " + record .getMethod () + "<br>" );
72
+ writer .println ("Resource " + record .getResource () + "<br>" );
73
+ writer .println (String .format ("<br>Date: %s" , reqTime .toString ()));
71
74
72
75
lastOffset = record .getOffset ();
73
76
74
77
// Display all the app logs for each request log.
75
78
for (AppLogLine appLog : record .getAppLogLines ()) {
76
- writer .println ("<br />" + "APPLICATION LOG" + "<br />" );
77
- Calendar appCal = Calendar .getInstance ();
78
- appCal .setTimeInMillis (appLog .getTimeUsec () / 1000 );
79
- writer .println (String .format ("<br />Date: %s" ,
80
- appCal .getTime ().toString ()));
81
- writer .println ("<br />Level: " + appLog .getLogLevel () + "<br />" );
82
- writer .println ("Message: " + appLog .getLogMessage () + "<br /> <br />" );
83
- } //for each log line
79
+ writer .println ("<br>" + "APPLICATION LOG" + "<br>" );
80
+ DateTime appTime = new DateTime (appLog .getTimeUsec () / 1000 );
81
+ writer .println (String .format ("<br>Date: %s" , appTime .toString ()));
82
+ writer .println ("<br>Level: " + appLog .getLogLevel () + "<br>" );
83
+ writer .println ("Message: " + appLog .getLogMessage () + "<br> <br>" );
84
+ }
84
85
85
86
if (++count >= limit ) {
86
87
break ;
87
88
}
88
- } // for each record
89
+ }
89
90
90
91
// When the user clicks this link, the offset is processed in the
91
92
// GET handler and used to cycle through to the next 5 request logs.
92
- writer .println (String .format ("<br><a href=\" /?offset=%s\" >Next</a>" ,
93
- lastOffset ));
94
- } // end doGet
95
- } //end class
93
+ writer .println (String .format ("<br><a href=\" /?offset=%s\" >Next</a>" , lastOffset ));
94
+ }
95
+ }
96
96
// [END logs_API_example]
97
97
0 commit comments