我们最近向我们的 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 插件网站上的描述没有合理解释为什么这会影响 webapp.gwt.xml 文件中的任何代码。
谢谢你的帮助!