Tomcat作为Windows服务运行时logging

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

logging各种function是使用java.util.logging实现的。

当通过startup.bat运行tomcat时,会创build日志文件并按照预期logging日志。

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

这听起来对任何人都熟悉吗? 你采取了哪些步骤来纠正?

问候

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

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

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

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

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

当作为服务启动时,jdk / jre / lib logging.properties进入游戏。

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

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

当tomcat作为服务启动时,它的默认日志配置实际上会覆盖任何特定于应用程序的日志配置。 正如Aaron建议设置配置的最好方法是使用tomcatw // ES // tomcat_service_name,例如,tomcat_service_name可以是Tomcat5,具体取决于您的安装首选项(也可以使用tomcatw而不是tomcat – 这两个可执行文件都可以在C:\ Program Files \ Apache Software Foundation \ Tomcat 5.0 \ bin)。 本文解释了如何确保您使用正确的服务名称(如果对话框中没有值,则名称可能不正确)。

我会张贴一个图像,但我没有足够的代表。 在Java VM选项卡上,在Java选项中输入配置,例如-Dlog4j.configuration = service.log4j.properties

然后可以将包含日志配置的文件放置在Tomcat服务器类目录中,例如C:\ Program Files \ Apache Software Foundation \ Tomcat 5.0 \ server \ classes。

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

创建log4j.properties文件时,将其命名为log4j.properties以外的内容,例如service.log4j.properties。 命名它log4j.properties运行的风险是,可以找到一个特定于应用程序的log4j.properties文件,这将覆盖您的配置,但随后将被tomcat服务忽略。