Java 作为windows服务运行时的Tomcat日志记录
我有一个在Tomcat下运行的web应用程序 使用java.util.Logging实现各种功能的日志记录 通过startup.bat运行tomcat时,会创建日志文件,并按预期记录日志 当使用同一war文件作为windows服务运行时,日志记录的输出几乎不存在。stdout.log和stderr.log中有一些(几乎没有)日志输出,但不是预期的结果 这听起来有人熟悉吗?您采取了哪些步骤来纠正它Java 作为windows服务运行时的Tomcat日志记录,java,windows,tomcat,logging,service,Java,Windows,Tomcat,Logging,Service,我有一个在Tomcat下运行的web应用程序 使用java.util.Logging实现各种功能的日志记录 通过startup.bat运行tomcat时,会创建日志文件,并按预期记录日志 当使用同一war文件作为windows服务运行时,日志记录的输出几乎不存在。stdout.log和stderr.log中有一些(几乎没有)日志输出,但不是预期的结果 这听起来有人熟悉吗?您采取了哪些步骤来纠正它 stdout和stderr日志文件应该在Tomcat安装的logs目录中创建 要配置日志记录,请使用
stdout和stderr日志文件应该在Tomcat安装的logs目录中创建
要配置日志记录,请使用“配置Tomcat”应用程序。您可以在此处设置错误级别和日志文件的位置。确保两种情况下的Tomcat环境相同。检查Tomcat服务编辑器中的路径和设置。不要对服务使用标准的Windows属性对话框,而是使用
//ES//name
启动tomcat.exe,其中name
是服务的名称。因为这是一个配置问题
从startup.bat启动时,tomcat将引用conf目录中的logging.properties
当作为服务启动时,jdk/jre/lib logging.properties将发挥作用
当作为windows服务运行时,所有控制台输出都会重定向到tomcat logs目录中的stdout.log
到目前为止,尝试使用custom logging.properties文件捕获自定义文件中的日志记录失败。当tomcat作为服务启动时,其默认日志记录配置实际上会覆盖任何特定于应用程序的日志记录配置。正如Aaron所建议的,设置配置的最佳方法是使用tomcatw//ES//tomcat\u service\u name,例如,tomcat\u service\u 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服务忽略。在windows上使用tomcat 9时,这可能是权限问题 tomcat的bin文件夹中的
service.bat安装工具正在将tomcat注册为本地服务帐户
此帐户类型没有足够的权限(其中包括写入日志文件和编译JSP)。
要解决此问题,您可以更改服务帐户类型并使用本地用户帐户来运行服务
或者,可以将该帐户更改为本地系统acocut(服务安装程序以前就是这样),但由于安全原因,不再建议这样做
另请参见检查服务的属性--Windows运行什么命令来启动Tomcat?该服务开始调用org.apache.catalina.startup.Bootstrap,并在JVM模式1中使用参数start,表示“当作为服务启动时,jdk/jre/lib logging.properties开始发挥作用。”使用“Monitor Tomcat”应用程序配置日志记录,当Tomcat作为Windows服务运行时,有没有办法将日志配置为使用log4j?