Tomcat日志项目中的log4j日志控制台——我的日志最后到底跑哪去了?

Posted 剑握在手

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat日志项目中的log4j日志控制台——我的日志最后到底跑哪去了?相关的知识,希望对你有一定的参考价值。

1、Tomcat自带日志功能,即时你的项目中有log4j也不会影响到Tomcat自己记录日志。

2、你的项目中的log4j中的日志指定打印到什么地方(控制台或者文件),便会打印到什么地方,和Tomat日志无关。

——如果你项目中的log4j指定打印到控制台,并且你开启的tomcat有控制台,那么这个时候你可以在控制台观察到日志。

——如果你用log4j来处理了Tomcat的日志(具体需要你自己配置tomcat的配置文件),那么Tomcat便会使用log4j来打印,但是这和你项目中的log4j仍然不是同一个log4j。

3、关于异常日志的打印

如果你在你的项目中处理了某个异常:

        try {
            int i = 1/0;
        }catch(Exception e) {
            e.printStackTrace();
        }

  A、那么这个异常信息会打印到你的控制台。你说你没有开控制台,是用服务的形式跑的?那么这个异常的信息你就看不见了。

  B、你在你的项目中直接throw的,并且没有任何地方处理这个异常,那么最后这个异常会被抛给你的容器——Tomcat,Tomcat这时会在localhost.日期.log文件中记录这个异常。

  C、你使用的是log4j:

LogFactory.getLog(Logger.class).error("Thread:"+i+"-print:"+j+"-CurrentThread:"+Thread.currentThread());

  那么你应该去看看你的log4j配置文件中,看看里面写的要把这条错误信息打印在哪。

  ——如果是打印到控制台,那么就去控制台找。如果没有控制台,那么这个错误信息也就丢了。

  ——如果是写入某个文件,那当然就是在你的文件中了。

 

4、控制台

Tomcat默认也会往控制台输出日志,这部分日志和其catalina.日期.log文件中记录的是一致的。

程序中的syso、e.printStackTrace(),以及log4j如果配置的往控制台输出日志,那么他们全部都会出现在控制台上,

别看你eclipse里的控制台上有那么多日志,你要搞清楚他们不是同一个日志记录器写的。

以上是关于Tomcat日志项目中的log4j日志控制台——我的日志最后到底跑哪去了?的主要内容,如果未能解决你的问题,请参考以下文章

java 怎么获得tomcat 控制台输出的日志

解决IntelliJ IDEA控制台乱码问题[包含程序运行时的log4j日志以及tomcat日志乱码]

log4j 日志信息的引入 — 解决项目运行过程中的日志信息

log4j无日志生成? 我将一个web项目部署在tomcat server.xml配置文件中,当我启动tomcat是无日志输出。

解决IntelliJ IDEA控制台乱码问题[包含程序运行时的log4j日志以及tomcat日志乱码]

Log4j 日志信息的引入 ( 通用版 ) : 解决项目运行过程中的日志信息