2014-04-03 22 views
0

我在iOs PhoneGap环境中使用gwt-phonegapgwt-logPhoneGap:使用gwt-log远程记录

我使用gwt-log与远程记录工作正常。我的应用程序也在PhoneGap容器中运行。

我的web.xml配置如下:

<module rename-to='mobilePhoneGapIOS'> 

<inherits name="com.allen_sauer.gwt.log.gwt-log-TRACE" /> 
<inherits name="com.allen_sauer.gwt.log.gwt-log-RemoteLogger" /> 

<set-property name="log_DivLogger" value="DISABLED" /> 
<set-property name="log_FirebugLogger" value="DISABLED" /> 


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

    ... 

我的web.xml中包含:

<servlet> 
    <servlet-name>GWT-Log-remote-logger-Servlet</servlet-name> 
    <servlet-class>test.mobilePhoneGapIOS.server.MyRemoteLoggerServlet</servlet-class> 
    <init-param> 
     <param-name>symbolMaps</param-name> 
     <param-value>WEB-INF/deploy/mobilePhoneGapIO/symbolMaps</param-value> 
    </init-param> 
</servlet> 
<servlet-mapping> 
    <servlet-name>GWT-Log-remote-logger-Servlet</servlet-name> 
    <url-pattern>/mobilePhoneGapIOS/gwt-log</url-pattern> 
</servlet-mapping> 

我试图登录以下异常:

Log.fatal("This is what an exception might look like", new RuntimeException("2 + 2 = 5")); 

它的工作原理当我在桌面浏览器上使用它时,但是在电话上它不起作用。输出是:

2014-04-03 19:20:41.202 Test[29194:907] ERROR: (-:-) 2014-04-03 19:20:41,193 [FATAL] This is what an exception might look like 
java.lang.RuntimeException: 2 + 2 = 5 
    at Unknown._Jb(StackTraceCreator.java:180) 
    at Unknown.ixb(StackTraceCreator.java:518) 
    at Unknown.gxb(Throwable.java:56) 
    at Unknown.Bzb(Exception.java:29) 
    at Unknown.Ezb(RuntimeException.java:29) 
    at Unknown.Cc(Mobile.java:81) 
    at Unknown.Fc(Mobile.java:32) 
    at Unknown.FJb(SchedulerImpl.java:180) 
    at Unknown.wJb(SchedulerImpl.java:345) 
    at Unknown.JJb(SchedulerImpl.java:78) 
    at Unknown.DJb(SchedulerImpl.java:138) 
    at Unknown.TIb(Impl.java:290) 
    at Unknown.XIb(Impl.java:347) 
    at Unknown.anonymous(Impl.java:93) 
    at Unknown.anonymous(UnloadSupport.java:42) 

我有什么改变,使远程日志与堆栈跟踪反混淆在PhoneGap的容器中工作?

+0

你的评论没有帮助。我使用gwt-log – confile

+0

就像好奇心一样,为什么使用gwt-log而不是核心gwt logger处理程序? –

+0

Gwt-log更易于使用 – confile

回答

1

我从来没有使用gwt-log,因为官方的logging mechanism in GWT一直对我很好。所以,这就是我常能在我的项目远程登录:

首先,你必须启用日志记录和远程处理程序在你的module.gwt.xml文件:

<inherits name="com.google.gwt.logging.Logging"/> 
<set-property name="gwt.logging.simpleRemoteHandler" value="ENABLED" /> 

其次,你的web.xml应该有像这样配置远程日志记录的url-pattern(注意你必须在你的应用程序中设置确切的模式)。

<servlet> 
    <servlet-name>remoteLogging</servlet-name> 
    <servlet-class>com.google.gwt.logging.server.RemoteLoggingServiceImpl</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>remoteLogging</servlet-name> 
    <!-- replace gwt_test with your module name --> 
    <url-pattern>/gwt_test/remote_logging</url-pattern> 
</servlet-mapping> 

最后,使用java记录器像往常一样:

Logger logger = Logger.getLogger("MyLoggerName"); 
logger.log(Level.WARNING, "Something was wrong ", new RuntimeException("My error")); 

如果你想被是非模糊的在服务器端的异常,你必须实现自己的servlet来激活它:

public class RemoteLoggingDeobfuscatorServlet extends RemoteLoggingServiceImpl { 
    public void init() throws ServletException { 
    super.init(); 
    // replace gwt_test with your module name 
    String symbols = getServletContext().getRealPath("WEB-INF/deploy/gwt_test/symbolMaps/"); 
    super.setSymbolMapsDirectory(symbols); 
    } 
} 

并更改您的web.xml

<servlet-class>your_namespace.RemoteLoggingDeobfuscatorServlet</servlet-class> 
+0

也可以使用GWT.log()代替。 – confile

+1

不,从javadoc:'GWT.log()在开发模式下将消息记录到开发外壳记录器,或者以超级开发模式记录到控制台。通话在生产模式下进行了优化。这意味着'GWT.log'在生产中被默认删除。 –

+0

我必须设置GWT.setUncaughtExceptionHandler吗?如果是这样,你能解释我如何设置它与远程日志记录一起工作吗? – confile