windows下使用命令动态输出tomcat日志

转自http://www.51testing.com/html/99/478599-843404.html

最近测试遇到一个问题,我们的项目使用windows2003服务器,tomcat+oracle数据库。项目中有两个测试人员,经常需要查看日志定位问题,但是有两个问题:

    1.windows下tomcat输出日志跟linux下不一样,linux可以远程连接使用tail命令很轻松就可以看到日志,并且可以随时停止。但windows的日志只输入到控制台,不输出到日志文件。这就使得只有开着控制台才能看得到日志,而且不能ctrl+C停止截取。
    2.用远程桌面连接的话,两个测试人员不可能同时看得到控制台,而若使用VNC,RADMIN等软件,又会造成双方操控很混乱。
    所以就在想,要是能像linux那样随时查看日志又不用操控控制台就好了。
    解决思路:
    1.让tomcat日志输出到文件。这个明显可以实现的。
    2.找个软件能够连接windows,并且使用命令动态查看日志文件,比如tail。其实linux中的大多数命令windows也都有,只不过被界面封装了,现在linux的广大爱好者早就研发出了将windows命令转为了相应的linux命令的软件,所以也不成问题。
    下面就开始寻找解决方法了:
    1.让tomcat日志输出到文件
一般启动tomcat时都用startup.bat,但又有多少人真正研究过这个bat文件中到底暗藏什么玄机呢?我们来看一下这个bat文件。它使用call "%EXECUTABLE%" start %CMD_LINE_ARGS%这句话来调用catalina.bat启动。这句话执行的命令就相当于控制台输入catalina.bat start。怎么样,是不是跟linux很像啦,不过这个start是会在新窗口中启动catalina.bat,并将日志文件输出到新窗口中,这显然不是我们要的效果。我们将它改成call "%EXECUTABLE%" run %CMD_LINE_ARGS%。这样控制台就不会输出日志文件了,让catalina.bat去决定日志输出在哪里吧。
    那再来看一下catalina.bat。这里我就直接引用网上的方法了:寻找以%ACTION%结尾的四处,在后面加上
>> %CATALINA_BASE%\logs\detailLog.%DATE:~0,10%.log 
detailLog是我自己起的名字,大家可以随意更改,但是注意不要与默认日志文件冲突,否则启动会报个错,尽管无关紧要。那%DATE:~0,10%是用来截取系统时间的。在我的服务器上echo %DATE%,显示出的是“2013-04-02 星期二”,截取0-10位,也就是“2013-04-02”,所以今天产生的log文件名字应该是
detailLog.2013-04-02.log
这样再去双击startup.bat,就会发现控制台启动后不再输出日志文件。再去查看detailLog.2013-04-02.log,会发现日志都在里面。
那下面的 工作,就是如何简单的将日志文件显示出来了。
    2.动态查询windows日志文件
我们都喜欢用tail命令,那就去找个windows中的tail命令。
先下载一个UnxUtils,将它放在某个找得到的位置,解压,找到..\UnxUtils\usr\local\wbin目录,看到了吧,我们熟悉的linux命令都在里面了。将这个路径加到服务器系统环境变量PATH中,再打开cmd,输入tail --help,显示出帮助信息,好了,可以使用了。注意,远程桌面连接的童鞋,可能要在每一个用户那里都重新保存一下环境变量,否则其他用户会不认识这个命令哦。
这样的话,在cmd中输入tail logs\detailLog.2013-04-02.log,就跟linux效果一样啦。
    我还是觉得不方便,每次都要输入一下,那何不写个bat文件呢?
    桌面上新建记事本,
    @echo off
    tail -f E:\apache-tomcat-6.0.24-2\logs\detailLog.%DATE:~0,10%.log
    保存为log.bat文件。直接双击搞定!

你可能感兴趣的:(java)