我在网上看了一下,无法轻松按照指南为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的示例的任何指示。
答案 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而言,恐怕我从未尝试过。