slf4j未登录Cloud Endpoints AppEngine应用程序

时间:2017-09-19 18:36:53

标签: java maven google-app-engine slf4j

我在AppEngine标准环境Java 8中使用Google Cloud Endpoints。我正在使用Maven构建。

我正在尝试使用slf4j进行日志记录,但在任何级别都没有记录任何内容(日志不会出现在Stackdriver Logging中)。我在pom.xml中包含了slf4j和slf4j-jdk14绑定。

使用java.util.logging进行日志记录按预期工作,并根据我在logging.properties中设置的日志级别在Stackdriver Logging中显示日志。但我更喜欢使用slf4j接口。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

结果是端点框架取决于slf4j-nop.jar

通过运行mvn dependency:tree可以看出这一点。然后,您可以在/WEB-INF/lib/中看到nop jar。

为避免在战争中包含jar,请使用maven-war-plugin的包装排除选项,例如:

   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>2.6</version>
      <configuration>
         <webResources>
            <resource>
               <directory>${basedir}/src/main/webapp/WEB-INF</directory>
               <filtering>true</filtering>
               <targetPath>WEB-INF</targetPath>
            </resource>
         </webResources>
         <packagingExcludes>
             WEB-INF/lib/slf4j-nop-*.jar
         </packagingExcludes>
      </configuration>
   </plugin>

还要确保包含对要使用的绑定的依赖关系,例如

 <dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-jdk14</artifactId>
     <version>1.7.25</version>
 </dependency>

答案 1 :(得分:0)

我已经为Google Endpoints团队开了一张此门票,但是目前正在讨论是否以及如何解决这个问题。

https://github.com/cloudendpoints/endpoints-java/issues/116

与此同时,你也可以像这样排除slf4j-nop:

<dependency>
    <groupId>com.google.endpoints</groupId>
    <artifactId>endpoints-framework</artifactId>
    <version>${endpoints-framework.version}</version>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-nop</artifactId>
        </exclusion>
    </exclusions>
</dependency>