我们使用tomcat开发的时候,一般是在windows平台下.有时控制台中输出的调试和测试信息很多,
由于屏幕的滚动,不能及时看清和分析输出的信息.那么,有没有简单的方法来获取这些信息呢?
按照习惯,先在google上搜索了一下,没有发现有价值的信息,就只能自己想办法了.
在linux下,tomcat的控制台输出被自动重定向输出到logs目录下的catalina.out文件中.分析一下
文件catalina.sh发现如下的片断.
"$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS /
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" /
-Dcatalina.base="$CATALINA_BASE" /
-Dcatalina.home="$CATALINA_HOME" /
-Djava.io.tmpdir="$CATALINA_TMPDIR" /
org.apache.catalina.startup.Bootstrap "$@" start /
>> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
原来在linux下执行的时候,在执行参数的最后加入了重定向设置.
在windows下,同样也有命令管道的重定向机制,于是就在catalina.bat中找到了相应的执行行(179行)
将
%_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%
改为
%_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_BASE%"/logs/catalina.txt
然后点击startup.bat启动Tomcat,在logs下虽然生成了catalina.txt,但始终是0k大小,没有任何的内容. 这是怎么回事呢?
经过进一步分析发现,执行startup的时候,重新打开了一个windows窗口,这种情况下,有可能造成重定向的失败.这和linux下是不同的.单独执行一下catalina.bat发现如下的提示:
Using CATALINA_BASE: D:/jakarta-tomcat-5.0.25
Using CATALINA_HOME: D:/jakarta-tomcat-5.0.25
Using CATALINA_TMPDIR: D:/jakarta-tomcat-5.0.25/temp
Using JAVA_HOME: C:/Borland/JBuilder2005/jdk1.4
Usage: catalina ( commands ... )
commands:
debug Start Catalina in a debugger
debug -security Debug Catalina with a security manager
jpda start Start Catalina under JPDA debugger
run Start Catalina in the current window
run -security Start in the current window with security manager
start Start Catalina in a separate window
start -security Start in a separate window with security manager
stop Stop Catalina
version What version of tomcat are you running?
于是修改catalina.bat第42行
call "%EXECUTABLE%" start %CMD_LINE_ARGS%
为
call "%EXECUTABLE%" run %CMD_LINE_ARGS%
然后在此启动tomcat,再次查看catalina.txt,预期的信息果然如约而至!
其实更简单的更改方法是:直接修改catalina.bat的第42行为
call "%EXECUTABLE%" run %CMD_LINE_ARGS% >> ../logs/catalina.txt
当不需要的时候直接把../logs/catalina.txt去掉就可以了,改起来很方便快捷.