Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法在GAE GWT应用程序中记录日志文件?_Java_Google App Engine_Gwt_Logging_Log4j - Fatal编程技术网

Java 有没有办法在GAE GWT应用程序中记录日志文件?

Java 有没有办法在GAE GWT应用程序中记录日志文件?,java,google-app-engine,gwt,logging,log4j,Java,Google App Engine,Gwt,Logging,Log4j,我是GAE GWT应用程序的新手。我正在开发一个GAE-GWT应用程序,SpringMVC3作为服务提供商,GWT作为UI客户端(我不习惯使用GWT的RPC概念,所以我开始使用spring),log4j(v1.2.17)和log4j-GWT-1.0`作为日志记录。现在我需要将“日志”记录到一个文件中 但在编码时,GWT似乎接受ConsoleAppender,但不接受FileAppender或RollingFileAppender 如何在GWT中配置log4j,将“(服务器)日志”记录在单独的文件

我是GAE GWT应用程序的新手。我正在开发一个GAE-GWT应用程序,SpringMVC3作为服务提供商,GWT作为UI客户端(我不习惯使用GWT的RPC概念,所以我开始使用spring),log4j(v1.2.17)和log4j-GWT-1.0`作为日志记录。现在我需要将“日志”记录到一个文件中

但在编码时,GWT似乎接受
ConsoleAppender
,但不接受
FileAppender
RollingFileAppender

如何在GWT中配置log4j,将“(服务器)日志”记录在单独的文件中

我的log4j.properties文件

还有我的代码片段。

例外情况:

java.lang.NoClassDefFoundError: java.io.FileOutputStream is a restricted class. Please see the Google  App Engine developer's guide for more details.
    at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51)
    at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
    at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
    at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
    at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)
    at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)
    at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)
    at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
    at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
    at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
    at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:190)
    at com.google.appengine.tools.development.agent.runtime.RuntimeHelper.checkRestricted(RuntimeHelper.java:70)
    at com.google.appengine.tools.development.agent.runtime.Runtime.checkRestricted(Runtime.java:64)
    at org.apache.log4j.Logger.getLogger(Logger.java:104)
    at org.apache.commons.logging.impl.Log4JLogger.getLogger(Log4JLogger.java:262)
    at org.apache.commons.logging.impl.Log4JLogger.<init>(Log4JLogger.java:108)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(Runtime.java:127)
    at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Runtime.java:135)
    at org.apache.commons.logging.impl.LogFactoryImpl.createLogFromClass(LogFactoryImpl.java:1025)
    at org.apache.commons.logging.impl.LogFactoryImpl.discoverLogImplementation(LogFactoryImpl.java:844)
    at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:541)
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:292)
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:671)
    at org.springframework.web.servlet.DispatcherServlet.<clinit>(DispatcherServlet.java:246)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at java.lang.Class.newInstance(Class.java:374)
    at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153)
    at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:428)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:249)
    at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:306)
    at com.google.appengine.tools.development.AutomaticInstanceHolder.startUp(AutomaticInstanceHolder.java:26)
    at com.google.appengine.tools.development.AbstractModule.startup(AbstractModule.java:79)
    at com.google.appengine.tools.development.Modules.startup(Modules.java:88)
    at com.google.appengine.tools.development.DevAppServerImpl$2.run(DevAppServerImpl.java:383)
    at com.google.appengine.tools.development.DevAppServerImpl$2.run(DevAppServerImpl.java:376)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.google.appengine.tools.development.DevAppServerImpl.restart(DevAppServerImpl.java:376)
    at com.google.appengine.tools.development.gwt.AppEngineLauncher$AppEngineServletContainer.refresh(AppEngineLauncher.java:51)
    at com.google.gwt.dev.DevMode.onRestartServer(DevMode.java:349)
    at com.google.gwt.dev.shell.remoteui.RemoteUI.restartWebServer(RemoteUI.java:166)
    at com.google.gwt.dev.shell.remoteui.DevModeServiceRequestProcessor.processRestartServer(DevModeServiceRequestProcessor.java:94)
    at com.google.gwt.dev.shell.remoteui.DevModeServiceRequestProcessor.execute(DevModeServiceRequestProcessor.java:59)
    at com.google.gwt.dev.shell.remoteui.MessageTransport.processClientRequest(MessageTransport.java:362)
    at com.google.gwt.dev.shell.remoteui.MessageTransport.processMessage(MessageTransport.java:404)
    at com.google.gwt.dev.shell.remoteui.MessageTransport.access$400(MessageTransport.java:44)
    at com.google.gwt.dev.shell.remoteui.MessageTransport$3.run(MessageTransport.java:322)
    at java.lang.Thread.run(Thread.java:724)
log4j:WARN No appenders could be found for logger (org.springframework.web.servlet.DispatcherServlet).
java.lang.NoClassDefFoundError:java.io.FileOutputStream是一个受限类。有关更多详细信息,请参阅谷歌应用程序引擎开发者指南。
位于com.google.appengine.tools.development.agent.runtime.runtime.reject(runtime.java:51)
位于org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
位于org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
位于org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
位于org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)
位于org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)
位于org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)
位于org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
位于org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)
位于org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)
位于org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
在org.apache.log4j.helpers.OptionConverter.selectAndConfigure上(OptionConverter.java:526)
登录org.apache.log4j.LogManager(LogManager.java:127)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:190)
位于com.google.appengine.tools.development.agent.runtime.RuntimeHelper.checkRestricted(RuntimeHelper.java:70)
位于com.google.appengine.tools.development.agent.runtime.runtime.checkRestricted(runtime.java:64)
位于org.apache.log4j.Logger.getLogger(Logger.java:104)
位于org.apache.commons.logging.impl.Log4JLogger.getLogger(Log4JLogger.java:262)
位于org.apache.commons.logging.impl.Log4JLogger(Log4JLogger.java:108)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:526)
在com.google.appengine.tools.development.agent.runtime.runtime.newInstance(runtime.java:127)上
位于com.google.appengine.tools.development.agent.runtime.runtime.newInstance(runtime.java:135)
位于org.apache.commons.logging.impl.LogFactoryImpl.createLogFromClass(LogFactoryImpl.java:1025)
位于org.apache.commons.logging.impl.LogFactoryImpl.discoverLogImplementation(logfactorympl.java:844)
位于org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:541)
位于org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:292)
位于org.apache.commons.logging.LogFactory.getLog(LogFactory.java:671)
位于org.springframework.web.servlet.DispatcherServlet。(DispatcherServlet.java:246)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:526)
位于java.lang.Class.newInstance(Class.java:374)
位于org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153)
位于org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:428)
位于org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
位于org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
位于org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
位于org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
位于org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
位于org.mortbay.jetty.Server.doStart(Server.java:224)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:249)
位于com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:306)
位于com.google.appengine.tools.development.AutomaticInstanceHolder.startUp(AutomaticInstanceHolder.java:26)
位于com.google.appengine.tools.development.AbstractModule.startup(AbstractModule.java:79)
位于com.google.appengine.tools.development.Modules.startup(Modules.java:88)
位于com.google.appengine.tools.development.DevAppServerImpl$2.run(DevAppServerImpl.java:383)
在com.google.appengine.tools.development.DevAppServerImpl$2.run(DevAppServerImpl.java:376)
位于java.security.AccessController.doPrivileged(本机方法)
在com.google.appengine.tools.development.DevAppServerImpl.r上
import org.apache.log4j.Logger;
final private static Logger LOGGER = Logger.getLogger("RegistrationController");
java.lang.NoClassDefFoundError: java.io.FileOutputStream is a restricted class. Please see the Google  App Engine developer's guide for more details.
    at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51)
    at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
    at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
    at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
    at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)
    at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)
    at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)
    at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
    at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
    at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
    at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:190)
    at com.google.appengine.tools.development.agent.runtime.RuntimeHelper.checkRestricted(RuntimeHelper.java:70)
    at com.google.appengine.tools.development.agent.runtime.Runtime.checkRestricted(Runtime.java:64)
    at org.apache.log4j.Logger.getLogger(Logger.java:104)
    at org.apache.commons.logging.impl.Log4JLogger.getLogger(Log4JLogger.java:262)
    at org.apache.commons.logging.impl.Log4JLogger.<init>(Log4JLogger.java:108)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(Runtime.java:127)
    at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Runtime.java:135)
    at org.apache.commons.logging.impl.LogFactoryImpl.createLogFromClass(LogFactoryImpl.java:1025)
    at org.apache.commons.logging.impl.LogFactoryImpl.discoverLogImplementation(LogFactoryImpl.java:844)
    at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:541)
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:292)
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:671)
    at org.springframework.web.servlet.DispatcherServlet.<clinit>(DispatcherServlet.java:246)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at java.lang.Class.newInstance(Class.java:374)
    at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153)
    at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:428)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:249)
    at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:306)
    at com.google.appengine.tools.development.AutomaticInstanceHolder.startUp(AutomaticInstanceHolder.java:26)
    at com.google.appengine.tools.development.AbstractModule.startup(AbstractModule.java:79)
    at com.google.appengine.tools.development.Modules.startup(Modules.java:88)
    at com.google.appengine.tools.development.DevAppServerImpl$2.run(DevAppServerImpl.java:383)
    at com.google.appengine.tools.development.DevAppServerImpl$2.run(DevAppServerImpl.java:376)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.google.appengine.tools.development.DevAppServerImpl.restart(DevAppServerImpl.java:376)
    at com.google.appengine.tools.development.gwt.AppEngineLauncher$AppEngineServletContainer.refresh(AppEngineLauncher.java:51)
    at com.google.gwt.dev.DevMode.onRestartServer(DevMode.java:349)
    at com.google.gwt.dev.shell.remoteui.RemoteUI.restartWebServer(RemoteUI.java:166)
    at com.google.gwt.dev.shell.remoteui.DevModeServiceRequestProcessor.processRestartServer(DevModeServiceRequestProcessor.java:94)
    at com.google.gwt.dev.shell.remoteui.DevModeServiceRequestProcessor.execute(DevModeServiceRequestProcessor.java:59)
    at com.google.gwt.dev.shell.remoteui.MessageTransport.processClientRequest(MessageTransport.java:362)
    at com.google.gwt.dev.shell.remoteui.MessageTransport.processMessage(MessageTransport.java:404)
    at com.google.gwt.dev.shell.remoteui.MessageTransport.access$400(MessageTransport.java:44)
    at com.google.gwt.dev.shell.remoteui.MessageTransport$3.run(MessageTransport.java:322)
    at java.lang.Thread.run(Thread.java:724)
log4j:WARN No appenders could be found for logger (org.springframework.web.servlet.DispatcherServlet).
<set-property name="gwt.logging.simpleRemoteHandler" value="ENABLED" />