6

私は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");

    }

}

Webブラウザーでアプリにアクセスすると、アプリが機能していることがわかります(ブラウザーに「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(1行のみ):

.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文字列はどこにありますか?私は正しい場所を見ていませんか?

4

2 に答える 2

9

一見すると、「logging.properties」ファイルでこの設定を使用すると、次のようになります。

.level = WARNING

そして、あなた (コードにログインするときにレベルを指定しないでください。デフォルトのレベルが使用されます。これは確かに「警告」ではありません (私は INFO^^ と推測します) 次の行でログ レベルを指定します。

log.info(msg);

/* which is same as */
log.log(Level.INFO, msg);

その結果、(あなたの例では) 'INFO' レベルでのみログを記録しますが、構成ファイルでは WARNING レベル以上でログを記録するように指示されています。「情報」レベルが「警告」を下回っているため、それらはログ ファイルから破棄され、サーバーのログには表示されません。

代わりにこの方法を試すことをお勧めします。これにより、ログのレベルを指定する必要があります。

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

Edit2 : このログ構成は、クライアント側で実行する場合には影響しません。GWTにメッセージを記録したい場合はこれGWT.log(message);がありますが、レベルは指定できません。

完全に正しいわけではありません。ファイルの構成に依存しyour-app.gwt.xmlます。すべての詳細は、google dev guilde loggingで確認できます。とても便利でよくできていると思いました。それでも、簡単に言うと、GWT にはさまざまなデフォルト ロガーがあります (約 5 ~ 6)。すべては、ハンドラー*.gwt.xmlを介して構成できます (または、実用的に行うことができます)。侵略的なポップアップロガーがあまりにも長い間そこにあった後...私は、クライアントからサーバーにリモートでログを記録して、の使用を楽しむことにしました。使用時の構成は次のとおりです。logging.propertiesgwt.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"/>

このセットアップを使用する場合は、ロギングを処理するためにサーブレット定義を使用して構成することを忘れないでくださいweb.xml(残念ながら、ドキュメントには記載されていません)。

<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>

幸運を !

于 2012-08-20T11:28:24.020 に答える
0

[すべてのリクエスト] をチェックする代わりに、[重大度が最小のログ] をチェックして、ドロップダウン リストから [情報] を選択する必要があります。

于 2012-08-20T00:45:35.967 に答える