Tomcat作为Windows服务运行时记录

时间:2009-10-02 10:08:45

标签: java windows tomcat logging service

我有一个在Tomcat下运行的Web应用程序。

使用java.util.logging实现了各种功能的记录。

通过startup.bat运行tomcat时,会创建日志记录文件并按预期记录日志记录。

当使用相同的war文件作为Windows服务运行时,几乎不存在日志记录的输出。在stdout.log和stderr.log中有一些(几乎没有)日志输出但不是预期的。

这听起来对任何人都很熟悉吗?你采取了哪些措施来纠正它?

此致

5 个答案:

答案 0 :(得分:1)

应该在Tomcat安装的logs目录中创建了stdout和stderr日志文件。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

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

尝试使用自定义logging.properties文件捕获自定义文件中的日志记录到目前为止已失败。

答案 3 :(得分:0)

当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 Options中的第一行,您可以调试log4j正在执行的操作。服务器类目录被列为一个可能的搜索路径。

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

答案 4 :(得分:0)

在Windows上使用Tomcat 9时,这可能是权限问题。

tomcat的bin文件夹中的service.bat install工具正在将tomcat注册为本地服务帐户。

此帐户类型没有足够的权限(其中包括编写其日志文件和编译jsps的权限)。 要解决此问题,您可以更改服务帐户类型,并使用本地用户帐户来运行服务。

或者,可以将帐户更改为本地系统帐户(以前是服务安装程序的情况),但是由于安全原因,不再建议这样做。

另请参阅Tomcat Service gets installed with “Local Service” account

相关问题