如何禁用 apache 公共守护程序 (Procrun) 的日志记录标准输出?
How to disabled logging stdout for apache commons daemon (Procrun)?
我正在使用 apache 公共守护程序工具 Procrun
将 java 命令行工具安装为 windows 服务。
java 工具在 运行 期间在控制台上显示大量内容。守护程序工具会自动将任何 sysout 记录到日志文件中。只要服务是 运行.
,就无法删除此文件
问题:我的服务和我的应用程序几乎不应该重新启动。这导致守护进程 StdOutput
每个月有几百 GB 的日志文件,我只能通过先停止应用程序来手动清除它。
问题:是否可以禁用此服务日志记录?
您可以通过从配置脚本中省略 --StdOutput
和 --StdError
参数的文件名来避免将 stdout 和 stderr 写入文件。我有这个与 v1.0.15.0
一起工作
例如:
D:\prunsrv.exe //IS//SomeService ^
--DisplayName="SomeService" ^
--Description="Some Procrun Service" ^
--Startup=auto ^
--Install=%CD%\prunsrv.exe ^
--Jvm=%JAVA_HOME%\jre\bin\server\jvm.dll ^
--Classpath=%CD%\MyApplication-SNAPSHOT.jar; ^
--StartMode=jvm ^
--StartClass=com.myDomain.bootstrap ^
--StartMethod=start ^
--StartParams=start ^
--StopMode=jvm ^
--StopClass=com.myDomain.bootstrap ^
--StopMethod=stop ^
--StopParams=stop ^
--StdOutput= ^
--StdError= ^
--LogPath=%CD%\logs ^
--LogLevel=Debug ^
对我来说最佳实践是一个批处理文件,它对我来说非常简单:
installService.bat
REM Main
set SERVICE_NAME=MyService
set PR_DESCRIPTION=My Description
set PR_INSTALL=C:\procrun-sample-master\prunsrv.exe
set PR_STARTUP=auto
REM Java
set PR_JVM=%JAVA_HOME%\bin\server\jvm.dll
set PR_CLASSPATH=myservice.jar
REM LOG disabled
set PR_LOGPATH=C:\procrun-sample-master\log
set PR_STDOUTPUT=
set PR_STDERROR=
set PR_LOGLEVEL=Warn
REM Start Config
set PR_STARTUP=auto
set PR_STARTMODE=jvm
set PR_STARTCLASS=package.Classname
set PR_STARTMETHOD=start
REM Stop Config
set PR_STOPMODE=jvm
set PR_STOPCLASS=package.Classname
set PR_STOPMETHOD=stop
REM Install
prunsrv.exe //IS//%SERVICE_NAME%
已按照以下步骤解决此问题。
通过 Services
停止你的 apache 服务
以管理员身份打开命令提示符 (cmd)
导航到您的 tomcat exe 文件位置,即
cd D:\MyApplication\Apache-Tomcat\bin\
运行 命令下方
tomcat7.exe //US//JasperGenDoc --StdOutput=
通过Services
启动你的apache服务
我正在使用 apache 公共守护程序工具 Procrun
将 java 命令行工具安装为 windows 服务。
java 工具在 运行 期间在控制台上显示大量内容。守护程序工具会自动将任何 sysout 记录到日志文件中。只要服务是 运行.
,就无法删除此文件问题:我的服务和我的应用程序几乎不应该重新启动。这导致守护进程 StdOutput
每个月有几百 GB 的日志文件,我只能通过先停止应用程序来手动清除它。
问题:是否可以禁用此服务日志记录?
您可以通过从配置脚本中省略 --StdOutput
和 --StdError
参数的文件名来避免将 stdout 和 stderr 写入文件。我有这个与 v1.0.15.0
例如:
D:\prunsrv.exe //IS//SomeService ^
--DisplayName="SomeService" ^
--Description="Some Procrun Service" ^
--Startup=auto ^
--Install=%CD%\prunsrv.exe ^
--Jvm=%JAVA_HOME%\jre\bin\server\jvm.dll ^
--Classpath=%CD%\MyApplication-SNAPSHOT.jar; ^
--StartMode=jvm ^
--StartClass=com.myDomain.bootstrap ^
--StartMethod=start ^
--StartParams=start ^
--StopMode=jvm ^
--StopClass=com.myDomain.bootstrap ^
--StopMethod=stop ^
--StopParams=stop ^
--StdOutput= ^
--StdError= ^
--LogPath=%CD%\logs ^
--LogLevel=Debug ^
对我来说最佳实践是一个批处理文件,它对我来说非常简单:
installService.bat
REM Main
set SERVICE_NAME=MyService
set PR_DESCRIPTION=My Description
set PR_INSTALL=C:\procrun-sample-master\prunsrv.exe
set PR_STARTUP=auto
REM Java
set PR_JVM=%JAVA_HOME%\bin\server\jvm.dll
set PR_CLASSPATH=myservice.jar
REM LOG disabled
set PR_LOGPATH=C:\procrun-sample-master\log
set PR_STDOUTPUT=
set PR_STDERROR=
set PR_LOGLEVEL=Warn
REM Start Config
set PR_STARTUP=auto
set PR_STARTMODE=jvm
set PR_STARTCLASS=package.Classname
set PR_STARTMETHOD=start
REM Stop Config
set PR_STOPMODE=jvm
set PR_STOPCLASS=package.Classname
set PR_STOPMETHOD=stop
REM Install
prunsrv.exe //IS//%SERVICE_NAME%
已按照以下步骤解决此问题。
通过 Services
停止你的 apache 服务以管理员身份打开命令提示符 (cmd)
导航到您的 tomcat exe 文件位置,即
cd D:\MyApplication\Apache-Tomcat\bin\
运行 命令下方
tomcat7.exe //US//JasperGenDoc --StdOutput=
通过Services
启动你的apache服务