Tomcat控制台总是打印日志问题的解决办法

问题

使用gradle启动项目,在tomcat控制台中不停地打印perf4j性能日志,导致开发过程很卡很慢。明明修改了logback.xml配置文件,让它输出到log文件中,而不是控制台,但是不起作用。

Windows系统中,在启动tomcat后会出现上图这样的情况,

在ubuntu系统中,没有这种情况,应该是在ubuntu系统中,没有tomcat的控制台吧。
同样,部署在线上的时候也没有问题。

唯独在windows中进行开发的时候有问题。

解决过程

真的是尝试很久很久。

  刚开始调整日志打印路径,无果;
  然后就是调整日志打印级别,只打印Error的,这个实现了,却仍然打印;
  最后决定替换tomcat的Jar包里的代码,不让它打印日志了,解决问题。

Jar包中性能打印的语句为:

StopWatch stopWatch = new Log4JStopWatch("Messages.searchFiles");
try {
  ......
} finally {
  stopWatch.stop();
}

调用的perf4j-*.jar包中的方法

public Log4JStopWatch(String tag) {
  this(tag, null, Logger.getLogger(DEFAULT_LOGGER_NAME), Level.INFO, Level.WARN);
}

而这个方法最终打印在控制台上的语句为:

protected void log(String stopWatchAsString, Throwable exception) {
  logger.log((exception == null) ? normalPriority : exceptionPriority, stopWatchAsString, exception);
}

再跟踪这个方法,跳转到了log4j-*.jar包中的 Category.java类中的log 方法

public void log(Priority priority, Object message, Throwable t) {
  if(repository.isDisabled(priority.level)) {
    return;
  }
  if(priority.isGreaterOrEqual(this.getEffectiveLevel()))
  forcedLog(FQCN, priority, message, t);
}

再跳转时:

protected void forcedLog(String fqcn, Priority level, Object message, Throwable t) {
  callAppenders(new LoggingEvent(fqcn, this, level, message, t));
}

再往后就是具体打印的方法了。

之前问题的所有打印日志的方法都会走到这里,于是我把这个jar包中的log方法和forcedLog方法的内容都删除了,然后替换原来的log4j-*.jar包,实现效果。

这里提供一个修改后的jar包:

  链接:https://pan.baidu.com/s/1078F50P8UuWW-Hgxt36QbQ  密码:j4w9

但如果是maven项目,不能直接替换jar包,可以根据tomcat的加载优先级,将修改后的jar包放到tomcat 中的lib 目录下进行覆盖

具体参考:http://www.cnblogs.com/acm-bingzi/p/webModifyJar.html

原创文章,欢迎转载,转载请注明出处!

原文地址:https://www.cnblogs.com/acm-bingzi/p/tomcatLog.html

时间: 2024-08-27 14:30:54

Tomcat控制台总是打印日志问题的解决办法的相关文章

idea中tomcat控制台输出中文乱码问题的解决

idea中tomcat控制台输出中文乱码问题的解决 每次用新的tomcat和idea都会遇到tomcat控制台中文乱码问题,故在此整理. 基本上都是需要修改tomcat的启动参数(如果本身idea编码都统一设置为utf-8了) 打开tomcat下的bin目录,找到catalina.bat文件 找到 JAVA_OPTS 参数,在其中加上 -Dfile.encoding=UTF-8(用的7.0.82版本的设置为UTF-8,8.0.20版本的需要设置为GBK,目前不知道原因,可能是组件的编码有变化)

Tomcat启动找不到JAVA_HOME另类解决办法

1.解决方法:比较新版本的JDK,比如JDK1.7.安装完JDK不会自动注册环境变量JAVA_HOME,JRE_HOME. 这里有一种简单的方法,就是修改setclasspath.bat文件的方法.原理是Tomcat的startup.bat,它调用了catalina.bat,而catalina.bat调用的是setclasspath.bat文件. 修改如下: rem------------------------------------------------------------------

【控制台程序】一闪而过的基本解决办法

方法1: 直接通过[Ctrl + F5]组合键启动程序: 方法2: 在程序中加上getchar(); 方法3: 先添加对应引用: #include <ctype.h> #include <iostream> system("pause"); //代码中加上这句,系统暂停; 方法4: 通过[cin>>]等待新的输入来实现暂停的作用. [控制台程序]一闪而过的基本解决办法,布布扣,bubuko.com

复印机出现(工作执行不当,请检查日志)的解决办法

复印机出现(工作执行不当,请检查日志)的解决办法: 查看复印机的ip地址 打开浏览器,输入复印机的ip地址 点击进入"扫描","程序" 4.删除之前的程序,重新创建一个新的(记得要跟之前的配置一样,最好截下图) 5.删除完以后,点击"新注册"."SMB",下一步. 6.然后按照之前的配置,一一对照即可.

等待事件之日志等待事件解决办法

我坚持每天看3套RAC的AWR,总结了一下. 查找日志等待事件的SQL: 9i:select * from v$event_name where name like '%log%';(大概14个左右) 10g: select name,wait_class from v$event_name where name like '%log%';(大概35个左右) 11g: select name,wait_class from v$event_name where name like '%log%'

tomcat单独启动时闪退的解决办法,以及修改端口8080为80,

tomcat单独启动时闪退的解决办法: 点击" startup",马上就闪退了:原因一般都是没有配置%JAVA_HOME%和tomcat的环境变量造成的: 很简单: 在startup.bat那个文件下,编辑点进去之后,在最上边的echo off上面加上: SET JAVA_HOME=C:\Program Files\Java\jdk1.7.0_60 SET TOMCAT_HOME=C:\apache-tomcat-7.0.53 然后shutdown.bat里面也要加上这两句话: 然后重

Linux下Tomcat向MySQL插入数据中文乱码解决办法

Linux下Tomcat向MySQL插入数据中文乱码解决办法 一.问题 在windows上面使用eclipse开发的项目在windows上面运行一切正常,部署到腾讯云时出现向MySQL数据库中插入数据是中文乱码 二.解决办法 1.尝试一直接在linux上面使用insert语句插入中文,正常2.尝试二在tomcat配置文件server.xml中加入useBodyEncodingForURI="true",不行3.尝试三在tomcat配置文件server.xml中再加入URIEncodin

tomcat输出servlet-api.jar - jar not loaded 解决办法

启动tomcat后,控制台输出信息:WEB-INF/lib/servlet-api.jar not loaded 解决办法INFO: Starting Servlet Engine: Apache Tomcat/7.0.54Dec 26, 2016 1:08:07 PM org.apache.catalina.loader.WebappClassLoader validateJarFileINFO: validateJarFile(/home/www/xxx/WEB-INF/lib/servle

运行tomcat显示指定的服务未安装解决办法

一.问题重现 二.原因分析 tomcat7.exe和tomcat7w.exe要起作用必须先未这两个文件安装服务. 其中tomcat7.exe这个文件是用来启动tomcat的,tomcat7w.exe这个文件是管理tomcat服务的. 三.解决办法 windows+r打开命令行窗口,进入tomcat的安装目录,然后在进入bin文件夹下,输入:service.bat install即可! 原文地址:https://www.cnblogs.com/zhanzhuang/p/9149378.html