Tomcat在作为Windows服务运行时的日志记录

3
我有一个运行在Tomcat下的web应用程序。
各种功能都使用java.util.logging实现日志记录。
当通过startup.bat运行tomcat时,日志文件按预期创建并记录日志。
当使用相同的war文件以Windows服务运行时,日志输出几乎不存在。stdout.log和stderr.log中有一些 ( 几乎没有 ) 日志输出,但不是预期的内容。
这对任何人都很熟悉吗?您采取了哪些步骤来纠正它?
问候。

检查服务的属性 -- Windows 运行哪个命令来启动 Tomcat? - Jeremy Stein
服务已启动,调用org.apache.catalina.startup.Bootstrap并使用JVM模式下的start参数。 - FacilityDerek
5个回答

2
这可能是在Windows上使用Tomcat 9时的权限问题。Tomcat的bin文件夹中的service.bat install工具会将Tomcat注册为本地服务帐户。该帐户类型没有足够的权限(其中包括编译JSP和编写日志文件)。要解决此问题,您可以更改服务帐户类型并使用本地用户帐户运行服务。或者,也可以将帐户更改为本地系统帐户(曾经是服务安装程序的情况),但由于安全原因,不再建议这样做。详情请参考Tomcat Service gets installed with “Local Service” account

1
当Tomcat作为服务启动时,其默认日志配置实际上会覆盖任何特定于应用程序的日志配置。正如Aaron所建议的那样,设置配置的最佳方式是使用tomcatw //ES//tomcat_service_name,例如,tomcat_service_name可以是Tomcat5,具体取决于您的安装偏好(此外,请使用tomcatw而不是tomcat - 两个可执行文件都可以在C:\ Program Files \ Apache Software Foundation \ Tomcat 5.0 \ bin中找到)。此post解释了如何确保您使用正确的服务名称(如果对话框中没有值,则名称可能不正确)。
我将不会发布图片,因为我没有足够的声望。在Java VM选项卡上,在Java Options中输入配置,例如-Dlog4j.configuration=service.log4j.properties
然后,包含您的日志配置的文件可以放置在tomcat服务器类目录中,例如C:\ Program Files \ Apache Software Foundation \ Tomcat 5.0 \ server \ classes。

有几个地方可以放置日志配置文件。我最初尝试指定日志配置文件的完整路径,但log4j似乎只检查特定路径。正如post所述,将-Dlog4j.debug作为Java选项的第一行,并且您可以调试log4j正在执行的操作。服务器类目录列为一个可能的搜索路径。

创建log4j.properties文件时,请将其命名为除log4j.properties之外的其他名称,例如service.log4j.properties。将其命名为log4j.properties会有风险,因为可能会找到特定于应用程序的log4j.properties文件,该文件会覆盖您的配置,但随后将被tomcat服务忽略。


1

您的Tomcat安装目录下的logs文件夹中应该已经创建了stdout和stderr日志文件。

要配置日志记录,请使用“配置Tomcat”应用程序。您可以在那里设置错误级别和日志文件的位置。


0

确保Tomcat环境在两种情况下相同。检查Tomcat服务编辑器中的路径和设置。不要使用标准的Windows属性对话框来管理服务,而是使用//ES//name启动tomcat.exe,其中name是服务的名称。


0

事实证明这是一个配置问题。

当从startup.bat启动时,Tomcat将引用conf目录中的logging.properties。

当作为服务启动时,jdk/jre/lib logging.properties就会发挥作用。

当作为Windows服务运行时,所有控制台输出都会重定向到tomcat日志目录中的stdout.log文件。

尝试使用自定义logging.properties文件捕获日志记录到自定义文件中,但迄今为止均未成功。


2
使用“Monitor Tomcat”应用程序来配置日志记录,当将Tomcat作为Windows服务运行时,“jdk/jre/lib logging.properties”开始发挥作用。 - kgiannakakis
那么有没有一种方法可以配置日志记录以使用log4j呢? - Jen Sze

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接