Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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
Google应用程序引擎Java日志,特别是Slf4j_Java_Google App Engine_Slf4j_Jersey Client_Gae Module - Fatal编程技术网

Google应用程序引擎Java日志,特别是Slf4j

Google应用程序引擎Java日志,特别是Slf4j,java,google-app-engine,slf4j,jersey-client,gae-module,Java,Google App Engine,Slf4j,Jersey Client,Gae Module,我以前见过有人问过这个问题,但似乎找不到一个可靠的解决办法。到目前为止,Google App Engine不支持java.util.logging.Logger的子类。我在java端点中有一些代码,它使用基本CRM API(此处的信息:)将联系人输入到我的CRM中。当在locahost环境中使用它进行测试时,它会像预期的那样工作,但是一旦部署,它就不喜欢基本API所做的日志记录。以下是我从GAE得到的错误: java.lang.SecurityException: Google App Engi

我以前见过有人问过这个问题,但似乎找不到一个可靠的解决办法。到目前为止,Google App Engine不支持java.util.logging.Logger的子类。我在java端点中有一些代码,它使用基本CRM API(此处的信息:)将联系人输入到我的CRM中。当在locahost环境中使用它进行测试时,它会像预期的那样工作,但是一旦部署,它就不喜欢基本API所做的日志记录。以下是我从GAE得到的错误:

java.lang.SecurityException: Google App Engine does not support subclasses of java.util.logging.Logger: com/getbase/http/jersey/HttpClient$Slf4jAdapter
    at com.google.appengine.runtime.Request.process-bbdc1f6d27729bc9(Request.java)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:375)
    at com.getbase.http.jersey.HttpClient.<init>(HttpClient.java:31)
    at com.getbase.Client.<init>(Client.java:34)
    at com.nicholas.leadsbackend.LeadsServlet.sendToBase(LeadsServlet.java:90)
    at com.nicholas.leadsbackend.LeadsServlet.doPost(LeadsServlet.java:61)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:453)
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:460)
    at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:293)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:319)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:311)
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:457)
    at java.lang.Thread.run(Thread.java:745)
API代码是非常简单的代码,不是这里的问题。我的问题是CRM API需要此依赖项
编译组:“org.slf4j”,名称:“slf4j simple”,版本:“1.7.21”
才能正常工作,否则会引发错误


请让我知道是否有任何方法来解决这个问题的GAE。我正在寻找GAE以外的其他选项,因为其他选项可能没有严格的日志记录规则。我知道这也是一个特例场景,因为这是一个额外的API导致了我的问题,但任何见解都将非常有用。提前谢谢

我知道这是一个非常具体的问题,我正在与基础开发人员支持部门合作,为SFL4j日志找到一个解决方法。因此,我清理了基础JavaAPI,发现只有一个类创建了sfj4j适配器的子类。这是对他们API的更新,不确定他们何时合并了此更新,所以我决定使用一个比他们在文档中列出的旧API

下面是库提供的一个可供使用的库:compile
“com.getbase:basecrm java:1.4.5”

其中有以下类别:

public static class Slf4jAdapter extends java.util.logging.Logger {
        private final Logger logger;

        public Slf4jAdapter(Logger logger) {
            super("jersey", null);
            this.logger = logger;
        }

        @Override
        public void info(String msg) {
            logger.info(msg);
        }
    }
这是java.util记录器的子类

我最终使用了这个库:
compile“com.getbase:basecrmjava:1.0.0”

这是在他们开始使用sfl4j日志之前。这使得谷歌应用引擎没有拒绝我的请求,现在一切正常

我不确定他们是从哪个版本开始使用sfl4j的,但我会找到答案,这样我就可以在没有sfl4j的情况下使用最新的getbase版本

在我发现是否有解决sfl4j日志记录或显示最新版本的方法后,我将编辑此答案。我希望这能对其他人有所帮助

public static class Slf4jAdapter extends java.util.logging.Logger {
        private final Logger logger;

        public Slf4jAdapter(Logger logger) {
            super("jersey", null);
            this.logger = logger;
        }

        @Override
        public void info(String msg) {
            logger.info(msg);
        }
    }