2014-04-03 2 views
0

iOS PhoneGap 환경에서 gwt-phonegapgwt-log을 사용합니다.PhoneGap : 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을 포함 :

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

그것은 작동합니다

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

나는 다음과 같은 예외를 기록하려고 내 데스크톱 브라우저에서 사용하지만 phonegap에서는 작동하지 않습니다. 출력은 다음과 같습니다

나는 폰갭 컨테이너에서 작업 스택 트레이스 명확화와 원격 로깅을 만들기 위해 변경해야 할 무엇
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) 

?

+0

귀하의 의견은 도움이되지 않습니다. 나는 gwt-log를 사용한다 – confile

+0

호기심과 같이 핵심 gwt 로거 핸들러 대신 gwt-log를 사용하는 이유는 무엇인가? –

+0

Gwt-log는 사용하기가 훨씬 쉽습니다. – confile

답변

1

공식 logging mechanism in GWT이 항상 나에게 잘 작동했기 때문에 결코 gwt-log를 사용하지 못했습니다. 당신이 당신의 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> 

사용 자바 로거 평소와 같이 : 당신이 당신의 예외가 서버 측에서 읽을 수있게되고 원하는 경우

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

것은, 당신이 그것을 활성화하기 위해 자신의 서블릿을 구현해야한다 :

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

관련 문제