我们的应用程序在Glassfish 3.1.2.2上运行。我们注意到以下日志文件不受限制地增长:
C:\glassfish3\glassfish\domains\domain1\bin\domain1ServiceService.err.log
这个文件似乎只是回显了也进入主server.log文件的正常日志记录。所以我认为这完全是多余的,没有必要。问题是,在几天的过程中,它的大小增加到15 GB以上,并最终消耗驱动器上的所有剩余空间,这给Glassfish(和Windows)带来了很多问题。
如何阻止Glassfish生成此文件,或者至少限制其大小?
答案 0 :(得分:1)
GlassFish在Windows上使用winsw作为服务日志记录实现。
您可以在文件(domain)service.xml
中配置日志记录,在您的情况下应该是:
C:\glassfish3\glassfish\domains\domain1\bin\domain1ServiceService.xml
您可以设置不同的日志模式。默认设置是在服务器重新启动之前附加到文件。
您可以在此行中更改日志模式:
<logmode>reset</logmode>
到roll
,这将在服务器重启时轮换日志文件。遗憾的是,您无法在服务器运行时将其配置为reset
或roll
日志文件,仅在服务器启动/重新启动时。
作为解决方法,您可以通过从此行中删除--verbose
来关闭日志记录:
<startargument>--verbose</startargument>
这将关闭日志记录,但这也会导致microsof服务控件无法与GlassFish 正常通信,例如您可以通过服务控制启动服务器,但无法阻止它,您必须手动终止该过程。
另见:
答案 1 :(得分:1)
我正在使用glassfish 3.1.2.2并遇到此问题。我的解决方案是使用1.16版本的winsw替换已部署的应用程序中glassfish(winsw的早期版本)提供的服务包装器,并将其配置为使得winsw不生成任何日志文件(除了包装日志,在我的情况下很小) )。我从这里下载了winsw:
http://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/1.16/
<强>步骤:强>
如果服务正在运行,请停止该服务。
替换服务exe(作为示例,我替换了这个文件: C:\ glassfish3 \ GlassFish的\域\ myServices \ BIN \ myServicesService.exe) 使用1.16版本的winsw(当然必须重命名该文件)。
然后打开文件xxxService.xml (例如C:\ glassfish3 \ glassfish \ domains \ myServices \ bin \ myServicesService.xml) 并通过设置
更改日志模式<logmode>none</logmode>
(来自<logmode>reset</logmode>
这是默认的)
还添加此版本winsw所需的<stopexecutable>
节点。复制<executable>
标记中的值。这是一个例子:
<stopexecutable>C:/glassfish3/glassfish/bin/asadmin.bat</stopexecutable>
最后启动服务。