最近、gwt Web アプリケーションに動的ログを追加しました。
これを実現するために、webapp.gwt.xml ファイルに小さな JavaScript 関数を追加しました。この関数は、URL 内の「?logging」パラメーターを検索し、 trueまたはfalseを返します。
<define-property name="dynamicLogging" values="TRUE, FALSE"/>
<property-provider name="dynamicLogging">
<![CDATA[
var logging = false;
var strHref = window.location.href;
if (strHref.indexOf("?") > -1) {
var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
var aParam = strQueryString.split("&").toString();
logging = aParam.indexOf("logging") > -1;
}
if (logging) {
return 'TRUE'
} else {
return 'FALSE'
}
]]>
</property-provider>
この関数は、gwt.logging をアクティブ化し、logLevel を「FINEST」に設定するために使用されます。
<set-property name="gwt.logging.enabled" value="TRUE">
<when-property-is name="dynamicLogging" value="TRUE"/>
</set-property>
<set-property name="gwt.logging.logLevel" value="FINEST">
<when-property-is name="dynamicLogging" value="TRUE"/>
</set-property>
gwt -maven-plugin の構成では、より小さな順列ファイルを生成するためにdisableClassMetadataプロパティを true に設定します。順列あたり約 90kb です。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<configuration>
<style>OBF</style>
<draftCompile>false</draftCompile>
<disableClassMetadata>true</disableClassMetadata>
<disableCastChecking>true</disableCastChecking>
<disableAggressiveOptimization>false</disableAggressiveOptimization>
<optimizationLevel>9</optimizationLevel>
<enableClosureCompiler>true</enableClosureCompiler>
<logLevel>INFO</logLevel>
</configuration>
</plugin>
しかし、これは動的ロギングを無効にします! これまでに判明した唯一のことは、JavaScript 関数が両方の構成で問題なく動作することです。(disableClassMetadata= trueおよびfalse )
Maven GWT プラグイン Web サイトの説明には、これが webapp.gwt.xml ファイル内のコードに影響を与える可能性がある理由についての合理的な説明がありません。
ご協力いただきありがとうございます!