我将Web服务部署为Tomcat 8.0.24上的Web应用程序(war)。应用程序罐已经过测试,它们工作正常。现在,为了配置和测试log4j,我引发了一个运行时错误(没有连接db)。
我试图只为应用程序日志设置log4j2(而不是tomcat),并使用Netbeans 8.0.2构建war。
我在类路径中包含了以下罐子:
log4j-api-2.8.jar
log4j-core-2.8.jar
log4j-web-2.8.jar
log4j-jcl-2.8.jar
commons-logging.jar
和log4j2。WEB-INF中的xml,只有根记录器配置为捕获来自WEB应用的所有内容:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration strict="true" status="TRACE">
<Properties>
<Property name="filename">C:\logs\Myapp.log</Property>
</Properties>
<Appenders>
<Appender type="Console" name="Console" target="SYSTEM_OUT">
<Layout type="PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} - %-5level %logger - %msg%n</Pattern>
</Layout>
</Appender>
<Appender type="File" name="FileAppender" fileName="${filename}" append="true" immediateFlush="true">
<Layout type="PatternLayout">
<Pattern>%d %p %logger -%C- %m%n</Pattern>
</Layout>
</Appender>
</Appenders>
<Loggers>
<Root level="ERROR">
<AppenderRef ref="Console"/>
<AppenderRef ref="FileAppender" level="WARN"/>
</Root>
</Loggers>
</Configuration>
我还配置了catalina。属性,以防万一,以覆盖默认jarsToSkip:
tomcat.util.scan.StandardJarScanFilter.jarsToScan=log4j-core*.jar,log4j-taglib*.jar,log4j-api*.jar,log4j-web*.jar,log4j-jcl*.jar`
我相信log4j已正确初始化为catalina*。日志状态,由于status=“TRACE”:
2017-02-08 14:06:52,355 http-nio-8080-exec-8 DEBUG Log4jServletContextListener ensuring that Log4j starts up properly.
2017-02-08 14:06:52,357 http-nio-8080-exec-8 DEBUG Log4jServletFilter initialized.
也因为创建了日志文件。
然而,来自应用程序(web服务jar)的所有运行时错误消息都以catalina*结尾。日志,而不是我配置的文件追加器。此外,catalina*中的错误消息。日志并没有遵循Appenders定义中定义的任何模式,所以基本上看起来log4j2被忽略了。
我做错了什么?
在log4j的留档中,我发现组件下有一个log4j 1.2应用编程接口,它声明“允许编码为使用Log4j 1.2应用编程接口的应用程序使用Log4j 2来代替”
嗯,我发现应用程序的jars是使用以前版本的log4j开发的。所以我加入了log4j-1.2-api-2.8.jar,移除了log4j-jcl-2.8.jar和commons-logging.jar,这就成功了。现在,应用程序的日志消息被发送到配置为appender的文件。
也许值得一提的是,添加log4j-1.2-api-2.8.jar后的第一次测试不起作用,所以我想它和我后来移除的罐子有点冲突。
我在运行单个节点的火花。 我的应用程序(java-web)使用的内存比可用的少。我发现这条线很有用。 对于本地模式,您只有一个执行器,而这个执行器是您的驱动程序,所以您需要设置驱动程序的内存。*也就是说,在本地模式下,当您运行spark-submit时,JVM已经启动了默认内存设置,因此在conf中设置“spark.driver.memory”实际上不会对您有任何帮助。相反,您需要运行spark-
我试图通过以下教程在我的Web应用程序中配置log4j2。我正在使用glassfish 4.1。1服务器和servlet版本3.1。我可以使用以下配置配置日志功能: log4j。性质 属性文件放在src/main/资源文件夹中 网状物xml 定义文件位置的上下文参数被注释掉。默认情况下,log4j可能会查找名为log4j的文件。财产。不过,我只是想知道指定文件位置的方法是否正确。 我也不确定哪个j
对于那些在生产中运行Go后端的人: 运行Go web应用程序的堆栈/配置是什么? 除了人们使用标准库NET/HTTP包来保持服务器的运行之外,我还没有看到关于这个主题的很多东西。我读过使用Nginx向Go服务器传递请求-Nginx with Go 这在我看来有点脆弱。例如,如果计算机重新启动(没有附加配置脚本),服务器将不会自动重新启动。 是否有更坚实的生产设置? 关于我的意图--我正在为我的下一
我正在尝试在web应用程序中使用Freemarker进行电子邮件模板制作。 我声明了一个FreeMarkerConfiguration FactoryBean,如下所示: 运行我的JUnit时一切正常,但在我的webapp中运行时,我的bean被Spring启动FreeMarkerAutoConfiguration“覆盖”。 我已尝试: 从我的gradle文件中删除sping-boot-start
问题内容: 是否有任何模式或最佳实践可用于简化跨多个环境的Java Web应用程序的配置文件更改。例如JDBC URL,SOAP端点等。 为了帮助澄清我的问题,我使用了一些大型Java Web应用程序作为背景知识,这些Web应用程序在任何给定的发行周期内都会在6种不同的环境中移动。开发,集成,质量保证,性能,并最终部署到多个生产服务器。在每种环境中,配置都需要更改。目前,每个部署的大多数配置更改都
问题内容: 对于那些在生产环境中运行Go后端的人: 运行Go Web应用程序的堆栈/配置是什么? 除了人们使用标准库net / http包来保持服务器运行之外,在该主题上我还没有看到太多内容。我阅读了使用Nginx将请求传递到Go服务器的信息- 使用Go的 Nginx 在我看来,这有点脆弱。例如,如果重新启动计算机(没有其他配置脚本),服务器将不会自动重新启动。 是否有更可靠的生产设置? 除了我的