如何为apache commons daemon(Procrun)禁用日志记录stdout?

时间:2015-07-21 11:43:13

标签: java apache-commons procrun

我使用apache commons daemon工具Procrun将java命令行工具安装为Windows服务。

java工具在运行期间在控制台上显示大量内容。守护进程工具会自动将任何sysout记录到日志文件中。只要服务正在运行,就无法删除此文件。

问题:我的服务和应用程序几乎不应该重新启动。这导致每月几百GB的守护进程StdOutput日志文件,我只能通过先停止应用程序来手动清除。

问题:是否可以禁用此服务日志记录?

3 个答案:

答案 0 :(得分:5)

您可以通过从--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 ^

答案 1 :(得分:1)

对我来说,最佳实践是一个批处理文件,它对我来说非常简单:

<强> 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%

答案 2 :(得分:0)

按照以下步骤解决此问题。

  1. 通过服务
  2. 停止您的apache服务
  3. 以管理员身份打开命令提示符(cmd)
  4. 导航到您的tomcat exe文件位置,即

    cd D:\MyApplication\Apache-Tomcat\bin\

  5. 运行以下命令

    tomcat7.exe //US//JasperGenDoc --StdOutput=

  6. 通过服务
  7. 启动您的apache服务