windows下tomcat输出控制台日志文件
windows服务器情况下,无法和linux服务器一样,启动web服务之后,直接tail查看日志,而windwos控制台的输出空间有限,如果遇到大量错误的情况下,console日志刷新太快,无法看到首次错误是在哪里出现的,会产生很多不必要的麻烦,所以从网上查找了windows控制台信息输出到文件的方法,记录一下。
一、首先,windows下tomcat启动文件startup.bat
// 打开新窗口,执行 EXECUTABLE 环境变量所代表的catalina.bat 批处理文件与 CMD_LINE_ARGS 代表的参数
call "%EXECUTABLE%" start %CMD_LINE_ARGS%
启动程序最后一行:
“call “%EXECUTABLE%” start %CMD_LINE_ARGS%”
其中,执行start会重新打开新的cmd窗口运行catalina.bat,并且在新的窗口中打印日志信息,即我们看到的console,修改strat为run,即不弹出新的cmd窗口,直接在本窗口运行。
- 此修改,打开catalina.bat不再弹出新的窗口
- 此修改,也可以解决因为端口冲突导致的tomcat窗口闪退问题
二、其次,startup会运行catalina.bat,修改catalina.bat的内容,在%ACTION%后增加:
>>"%CATALINA_HOME%\logs\consoleTailLog.%DATE%.log"
修改完成:
rem Execute Java with the applicable properties
if not "%JPDA%" == "" goto doJpda
if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%>>"%CATALINA_HOME%\logs\consoleTailLog.%DATE%.log"
goto end
:doSecurity
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%>>"%CATALINA_HOME%\logs\consoleTailLog.%DATE%.log"
goto end
:doJpda
if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%>>"%CATALINA_HOME%\logs\consoleTailLog.%DATE%.log"
goto end
:doSecurityJpda
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%>>"%CATALINA_HOME%\logs\consoleTailLog.%DATE%.log"
goto end
:end
- 此修改,将catalina.bat运行产生的日志信息,打印为文件consoleTailLog.%DATE:~0,10%.log,路径可以自定义
- 一二修改后,在startup.bat打开的cmd窗口中,将不再打印console日志,直接输出到文件
三、网上还有另一个方法,亲测,有效,最为简单
//直接修改stratup.bat
//修改前
call "%EXECUTABLE%" start %CMD_LINE_ARGS%
//修改为
call "%EXECUTABLE%" run %CMD_LINE_ARGS% >> ..\logs\catalina.log
四、windows下的tail命令
tail命令包含在windows自带组件“Windows Server 2003 Resource Kit Tools”中,可以从微软下载:
https://www.microsoft.com/en-us/download/details.aspx?id=17657
或直接
http://download.microsoft.com/download/8/e/c/8ec3a7d8-05b4-440a-a71e-ca3ee25fe057/rktools.exe
下载后,压缩包打开,找到tail.exe,随便放到哪儿都能用,可查看帮助tail/?