【发布时间】:2014-03-21 13:50:19
【问题描述】:
我正在使用 GWT 2.6 和 GWT-log 3.3.0。 我尝试使用gwt-log 获取远程日志消息。我试过这个:
Log.fatal("This is what an exception might look like", new RuntimeException("2 + 2 = 5"));
这是我的 gwt.xml:
<module rename-to='testgwt'>
<inherits name="com.google.gwt.logging.Logging" />
<set-property name="gwt.logging.logLevel" value="INFO" />
<set-property name="gwt.logging.enabled" value="TRUE" />
<set-property name="gwt.logging.popupHandler" value="DISABLED" />
<set-property name="gwt.logging.developmentModeHandler" value="ENABLED" />
<inherits name="com.allen_sauer.gwt.log.gwt-log-DEBUG" />
<inherits name="com.allen_sauer.gwt.log.gwt-log-RemoteLogger" />
<set-property name="log_ConsoleLogger" value="ENABLED" />
<set-property name="log_DivLogger" value="ENABLED" />
<set-property name="log_FirebugLogger" value="ENABLED" />
<set-property name="log_GWTLogger" value="ENABLED" />
<set-property name="log_SystemLogger" value="ENABLED" />
<set-property name="compiler.emulatedStack" value="true" />
<set-configuration-property name="compiler.emulatedStack.recordLineNumbers" value="true"/>
<set-configuration-property name="compiler.emulatedStack.recordFileNames" value="true"/>
我的入口点类:
public void onModuleLoad() {
Log.setUncaughtExceptionHandler();
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
onModuleLoad2();
}
});
}
public void onModuleLoad2() {
Log.fatal("This is what an exception might look like", new RuntimeException("2 + 2 = 5"));
}
我可以看到在 WEB-INF/deploy/web/symbolMaps/ 中有很多文件,每个文件大小为 4.3MB。所以我猜symbolMaps生成成功了。
我的远程 servlet 配置是:
<servlet>
<servlet-name>gwt-log-remote-logger-servlet</servlet-name>
<servlet-class>com.allen_sauer.gwt.log.server.RemoteLoggerServiceImpl</servlet-class>
<init-param>
<param-name>symbolMaps</param-name>
<param-value>WEB-INF/deploy/testgwt/symbolMaps/</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>gwt-log-remote-logger-servlet</servlet-name>
<url-pattern>/testgwt/gwt-log</url-pattern>
</servlet-mapping>
我使用混淆的样式进行编译。在我的 WEB-INF/lib 文件夹中,我有 gwt-log.3.3.jar 文件。
在客户端我得到
(-:-) 2014-02-20 23:09:54,529 [FATAL] This is what an exception might look like
java.lang.RuntimeException: 2 + 2 = 5
at Unknown.ui(StackTraceCreator.java:180)
at Unknown.Zf(StackTraceCreator.java:518)
at Unknown.Yf(Throwable.java:56)
at Unknown.kh(Exception.java:29)
at Unknown.mh(RuntimeException.java:29)
at Unknown.PW(Testgwt.java:66)
at Unknown.TW(Testgwt.java:52)
at Unknown.ki(SchedulerImpl.java:180)
at Unknown.bi(SchedulerImpl.java:345)
at Unknown.oi(SchedulerImpl.java:78)
at Unknown.ii(SchedulerImpl.java:138)
at Unknown.Kh(Impl.java:290)
at Unknown.Oh(Impl.java:347)
at Unknown.anonymous(Impl.java:93)
at Unknown.anonymous(UnloadSupport.java:42)
在服务器端我得到:
SEVERE: This is what an exception might look like
java.lang.RuntimeException: 2 + 2 = 5
at Unknown.ui(StackTraceCreator.java:180)
at Unknown.Zf(StackTraceCreator.java:518)
at Unknown.Yf(Throwable.java:56)
at Unknown.kh(Exception.java:29)
at Unknown.mh(RuntimeException.java:29)
at Unknown.PW(Testgwt.java:66)
at Unknown.TW(Testgwt.java:52)
at Unknown.ki(SchedulerImpl.java:180)
at Unknown.bi(SchedulerImpl.java:345)
at Unknown.oi(SchedulerImpl.java:78)
at Unknown.ii(SchedulerImpl.java:138)
at Unknown.Kh(Impl.java:290)
at Unknown.Oh(Impl.java:347)
at Unknown.anonymous(Impl.java:93)
at Unknown.anonymous(UnloadSupport.java:42)
我必须做些什么才能使服务器端的反混淆在样式混淆的生产环境中工作?
编辑:
即使我不使用:
符号地图 WEB-INF/deploy/testgwt/symbolMaps/
它不会改变任何东西。 symbolMaps 文件夹的路径似乎是正确的。其中还有一些文件是在我的 Eclipse Web 应用程序项目中的 gwt comile 之后生成的。查看我制作的这个演示 eclipse gwt 项目:https://github.com/confile/gwtlogtest
编辑:我在 Tomcat 7.0.52 服务器上运行我的应用程序。在我的 catalina.log 中有以下警告:
Feb 21, 2014 12:08:11 AM com.allen_sauer.gwt.log.server.ServerLogImplJDK14 log
WARNING: Servlet configuration parameter 'symbolMaps' specifies directory
'WEB-INF/deploy/testgwt/symbolMaps/' which does not exist or is not relative
to your server's current working directory '/'
Feb 21, 2014 12:08:11 AM com.allen_sauer.gwt.log.server.ServerLogImplJDK14 log
WARNING: In order to enable stack trace deobfuscation, please specify
the 'symbolMaps' <init-param> for the com.allen_sauer.gwt.log.server.RemoteLoggerServlet servlet in your web.xml
似乎找不到符号映射。我检查了它就在这条路径上。
【问题讨论】:
标签: java javascript html gwt logging