相关推荐recommended
windows下tomcat控制台按天输出catalina.out日志
作者:mmseoamin日期:2023-12-19

windows下tomcat控制台按天输出catalina.out日志

    • 方法一(控制台窗口只有少量的信息,运行日志储存于catalina-日志中)
    • 方法二(控制台窗口中没有内容,运行日志储存于catalina-日志中)
    • 方法三(即能控制台打印,又有日志存储)

      windows服务器情况下,无法和linux服务器一样,启动web服务之后,直接tail查看日志,而windwos控制台的输出空间有限,如果遇到大量错误的情况下,console日志刷新太快,无法看到首次错误是在哪里出现的,会产生很多不必要的麻烦,所以从网上查找了windows控制台信息输出到文件的方法,记录一下。

      catalina.日期.log

      1、主要是记录tomcat启动时候的信息;

      2、启动的JVM参数以及操作系统等日志信息;

      3、没有使用log4j等日志机制,系统的的错误信息与打印语句也在这个日志文件中记录;

      4、在linux环境下所有的日志都在catalina.out中。

      5、在windows环境下,这个catalina.out里面的内容就是空的。日志只会体现在控制台打印

      方法一(控制台窗口只有少量的信息,运行日志储存于catalina-日志中)

      步骤1:打开bin下面的startup.bat文件,

      把 call "%EXECUTABLE%" start %CMD_LINE_ARGS%
      改为 call "%EXECUTABLE%" run %CMD_LINE_ARGS%
      此修改:不会弹出新的cmd窗口,直接在本窗口运行
      

      步骤2:打开bin下面的catalina.bat文件(文件末尾),

      在每个%ACTION%后面添加

      >> %CATALINA_HOME%\logs\catalina.%date:~0,4%-%date:~5,2%-%date:~8,2%.out
      

      生成的日志如下

      windows下tomcat控制台按天输出catalina.out日志,在这里插入图片描述,第1张

      双击startup.bat文件,启动tomcat服务。

      结果:

      控制台不会打印运行日志(只有少量的信息),运行日志(包括一些错误信息)会存在./log目录下的日志文件中,只能在文件里面看了。不利于维护人员直接判断项目是否启动成功。

      方法二(控制台窗口中没有内容,运行日志储存于catalina-日志中)

      步骤:打开bin下面的startup.bat文件,

      把 call "%EXECUTABLE%" start %CMD_LINE_ARGS%
      直接改为 call "%EXECUTABLE%" run %CMD_LINE_ARGS% >>%CATALINA_HOME%\logs\catalina.%date:~0,4%-%date:~5,2%-%date:~8,2%.out 2>&1
      

      其中将start修改为run是修改tomcat的启动方式。在>>之后加的是在tomcat安装目录下的logs文件夹中生成catalina.年-月-日.out的日志存储文件。

      修改完成后双击startup.bat启动tomcat服务器会发现命令窗口中没有内容,这样就对了。

      windows下tomcat控制台按天输出catalina.out日志,在这里插入图片描述,第2张

      生成的日志如下

      windows下tomcat控制台按天输出catalina.out日志,在这里插入图片描述,第1张

      由于配置 run 启动方式,导致catalina.bat文件的窗口名称配置已失效

      只能去startup.bat文件里面重新配置

      windows下tomcat控制台按天输出catalina.out日志,在这里插入图片描述,第4张

      结果:

      命令窗口中直接什么内容都没有了,同样不利于维护人员直接判断项目是否启动成功,只能查看日志文件了解是否启动成功。

      方法三(即能控制台打印,又有日志存储)

      通过以上两种方法得知,windows下的startup.bat 方式改为 run 以后

      控制台是没有办法再输出内容的,只能去生成的日志文件里面判断项目的启动情况,

      要么控制台打印,没有日志存储;

      要么日志存储;没有控制台打印;

      两者不能同时都有,让人很无语。

      有不有什么办法去实现呢?最后终于找到了,要通过tee.exe 去实现这个效果

      在http://sourceforge.net/projects/unxutils/?source=dlp 下载UnxUtils.zip,

      windows下tomcat控制台按天输出catalina.out日志,请添加图片描述,第5张

      解压后把UnxUtils\usr\local\wbin下的tee.exe 复制到windows\system32 里面即可

      打开bin下面的startup.bat文件,

      在末尾加上 chcp 65001 且修改 call “%EXECUTABLE%” start %CMD_LINE_ARGS%

      如下:

      chcp 65001
      call "%EXECUTABLE%" run %CMD_LINE_ARGS% 2>&1 | tee %CATALINA_HOME%\logs\catalina.%Date:~0,0%%Date:~3,4%-%Date:~8,2%-%Date:~11,2%.out
      

      如果执行不成功的话,可能是cmd下无法执行chcp命令

      出现这种报错(chcp不是内部或外部命令,也不是可运行的程序),就需要去配置环境变量

      在系统变量PATH下添加路径C:\WINDOWS\system32(最好去复制电脑上面的路径,直接复制这里,可能有符号转义)

      我这边环境为Windows10下的截图

      windows下tomcat控制台按天输出catalina.out日志,在这里插入图片描述,第6张

      如果是Windows xp 或者 Windows 7 的话,记得前面加个;(如果原来有了的话,就不要加了)

      完整的为

      ;C:\WINDOWS\system32

      该处的配置可能需要重启电脑才会生效(重启我自己没有操作,可能我之前就配置过了这个变量)

      最后,我是实现了既可以日志存储;又可以控制台打印

      相关链接

      https://blog.csdn.net/weixin_42250959/article/details/103474660

      https://www.cnblogs.com/dannylinux/p/10873993.html

      https://www.jianshu.com/p/22202f4268af

      标题改为中文后标题乱码问题:

      https://blog.csdn.net/lixingecho/article/details/115945423

      windwos下保存tomcat日志,同时控制台输出

      https://blog.csdn.net/itlijinpeng/article/details/129142114