在Google App Engine中配置Log4j2

时间:2015-11-04 21:57:39

标签: google-app-engine log4j2

我在网上看了一下,无法轻松按照指南为Google App Engine启用Log4j2。对这个功能不熟悉..我发现了3个可能相关的主要文件。

1)appengine-web.xml 2)log4j.properties 3)log4j2.xml

我的Log4j.properties如下所示:(这已包含在Web-Inf中)

log4j.appender.toFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.toFile.File=./log/logfile.log
log4j.appender.toFile.DatePattern='.'
log4j.appender.toFile.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=% %-5p [%t] - %c.%M - %m%n

我将以下内容添加到appengine-web.xml

  <!-- Configure apache Log4J Logging -->
  <system-properties>
  <property name="org.apache.logging.log4j.config.file" value="WEB-    INF/log4j.properties"/>
  </system-properties>

在运行Java应用程序时,我收到错误。

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

我的意图是将条目记录到文件中。关于我可以找到专门针对Google App Engine的示例的任何指示。

2 个答案:

答案 0 :(得分:2)

在GAE上没有关于log4j2的好教程的原因是因为你不能在GAE上使用log4j2并将文件作为输出。 GAE文件系统是只读的。您将无法登录vanilla应用程序引擎上的文件。您可以在托管虚拟机中执行此操作。

App Engine使用java.util.logging,可以在logging.properties文件夹的WEB-INF文件中进行配置。

如果您想让您的日志记录机制更具可重用性,我建议您查看slf4j。您可以像这样添加maven依赖项(如果使用maven):

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

如果您在混音中添加了一点lombok,则可以使用@Slf4j为您的课程添加注释,并开始使用log.info()/.warn()/.error()的记录器。

到目前为止,我发现这是使用Java登录应用引擎的最佳解决方案。

还有一件事需要考虑:如果您可以将日志写入App Engine中的文件,那么您如何将日志提供给自己而不是公众?您最终是否必须编写用于访问日志文件的UI?如果你这样做......为什么不使用App Engine提供的日志工具?

答案 1 :(得分:0)

Log4j2不使用log4j.properties。该文件适用于Log4j 1.x.最新版本的log4j2支持使用属性文件进行配置,但语法与log4j1不同。它还支持XML,JSON和YAML。

就Google App Engine而言,恐怕我从未尝试过。