log4j不输出日志错误分析
1.rootLogger不输出
代码如下:
配置文件代码:
log4j.rootLogger=info, R,userLog
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=E:/createHtml.log
log4j.appender.R.MaxFileSize=100MB
log4j.appender.R.MaxBackupIndex=20
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%p] %c - %m%n
log4j.appender.userLog=org.apache.log4j.ConsoleAppender
log4j.appender.userLog.Target=System.out
log4j.appender.userLog.layout=org.apache.log4j.PatternLayout
log4j.appender.userLog.layout.ConversionPattern=%m%n
类中代码:
private final static Log log = LogFactory.getLog("userInfoLog");
log.debug(“输出日志====”);
错误:设置好的日志,文件中没有输出,控制台也没有输出
原因:level级别问题;配置文件中设置的级别是info;而在类中输出使用的是debug;log4j的level级别为:debugàinfoàwarnàerror;
解决:配置级别高,输出级别低则不会输出,如果反过来就会输出;比如:配置文件改为debug,输出使用log.debug或者log.info或者更高级别都可以。
2.自定义的日志不输出
代码如下:
配置文件代码:
log4j.appender.createExcel=info,excel
log4j.appender.excel=org.apache.log4j.FileAppender
log4j.appender.excel.File=E:/createExcel.log
log4j.appender.excel.Append=true
log4j.appender.excel.Threshold=info
log4j.appender.excel.layout=org.apache.log4j.PatternLayout
log4j.appender.excel.layout.ConversionPattern=%m%n
log4j.additivity.createExcel = false
类中代码:
private final static Log log = LogFactory.getLog("createExcel ");
log.debug(“输出日志====”);
错误:使用自定义的名称createExcel不输出日志
原因:配置文件中的红色代码处有错误,这种错误很容易在配置文件中有很多日志文件的时候,复制上面的出错;
解决:log4j.logger.createExcel=info,excel;Logger:负责供客户端代码调用,执行debug、info等方法。
Appender:负责日志的输出,Log4j已经实现了多种不同目标的输出方式,可以向文件输出日志、向控制台输出日志、向Socket输出日志等。红色部分错误的将logger写成了appender;新添加一个自定义的日志的时候必须要是有log4j.logger类。
扩展:自定义日志的时候还容易出错的地方是:你配置文件中使用自定义名称与类中使用的不一致,这里配置文件中的log4j. appender.createExcel要与类中LogFactory.getLog("createExcel ");一致,否则也会导致不输出日志。
3.
自定义日志使用类名不输出
代码如下:
配置文件代码:
log4j.logger.performanceLogger=INFO,performanceLogger
log4j.appender.performanceLogger=org.apache.log4j.DailyRollingFileAppender log4j.appender.performanceLogger.File=/application/resinlog/cmslog/common-perf.log
log4j.appender.excel.layout=org.apache.log4j.PatternLayout
log4j.appender.excel.layout.ConversionPattern=%m%n
log4j.additivity.createExcel = false
类中代码:
private final static Log log = LogFactory.getLog (PerformanceMonitorFilter.class);
log.debug(“输出日志====”);
错误:指定的日志文件中没有输出日志,也没有报错
原因:配置文件中使用了自定义名称的方式,但是类中调用日志文件的时候却使用的类名
解决:如果类是个jar包,不容许修改的,那么就把配置文件改了;具体如下: log4j.logger.com.hudong.keel.web.filter.PerformanceMonitorFilter=INFO,performanceLogger
log4j.appender.performanceLogger=org.apache.log4j.DailyRollingFileAppender
如果类可以改,那也可以不改配置文件直接该类,如下:
private final static Log log = LogFactory.getLog (“performanceLogger”);
扩展:如果你不想在rootLogger指定的文件下输出内容,只想在你知道的自定义文件下输出你的日志,那么你可以把输出开关改为false,默认的是true;如果你不该那么就会在跟日志和你自定义的日志都输出日志;开关如下:
log4j.additivity.createExcel = false
4.如果配置好文件之后再控制台输出一些红色警告,那么证明你配置的log4j文件有错误;检查一下你的配置文件,具体配置文件的使用间博客其他有关log4j使用的文章。
log4j不输出日志错误分析的更多相关文章
- 使用log4j无法输出日志
前段时间在项目的过程中使用log4j来输出日志,但是在一个项目里我明明已经在src/main/resource目录下创建了log4j.properties.具体配置如下: log4j.rootLogg ...
- log4j配置输出日志文件
在测试程序时,有时候运行一次可能需要很久,把日志文件保存下来是很有必要的,本文给出了scala程序输出日志文件的方式,同时使用本人的另一篇博客中介绍的将log4j.properties放到程序jar包 ...
- kettle使用log4j管理输出日志
在使用kettle进行数据分析和清洗时日志非常多而且杂乱,使用原有的日志有时找不到异常的位置,有时日志不够详细,说简单一点就是日志不是我们想要的.因而对kettle日志进行相应的管理就想得尤为重要了. ...
- log4j直接输出日志到flume
log4j.properties配置: log4j.rootLogger=INFOlog4j.category.com.besttone=INFO,flumelog4j.appender.flume ...
- Log4j指定输出日志的文件
在Log4j的配置文件中,有一个log4j.rootLogger用于指定将何种等级的信息输出到哪些文件中, 这一项的配置情况如下: log4j.rootLogger=日志等级,输出目的地1,输出目的地 ...
- 排查log4j不输出日志到文件的问题
问题描述 项目使用Spring Boot框架,在pom文件中添加了如下配置: <dependency> <groupId>org.slf4j</groupId> & ...
- log4j不输出日志的解决方案
参考:http://blog.csdn.net/qq994406030/article/details/53433159 主要是log4j.properties log权限和log输出方式没配好.
- log4j日志优先级导致的不输出日志
在sae部署微信代码的时候,发现它的默认日志很不友好,看起来很费劲,详细看了一下说明发现它可以根据log4j的输出级别而分类输出,就拖了一个log4j的xml文件扔进项目代码,然后部署运行,发现没有日 ...
- (OAF)jdeveloper集成log4j并将日志输出到指定文件并写入数据库
参考: How to configure Log4j in JDev 11g Ever wanted to use log4j in your adf project ? Well though Or ...
随机推荐
- 题解 P5837 【[USACO19DEC]Milk Pumping】
这题其实想法挺简单的,因为他只需要简单的把每个点的花费和流量用dp记下来就好了 1.怎么记: 首先考虑dp的状态.由于所在的点和流量都要记,所以dp开二维,一维记所在的点,另一维记去哪 //dp[i] ...
- Django专题-AJAX
AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JS ...
- mysql之存储过程(二)
1.批量根据复杂的SQL查询结果插入到新表 DELIMITER && CREATE PROCEDURE settlePADTEST() begin DECLARE c_s ...
- 微服务监控druid sql
参考该文档 保存druid的监控记录 把日志保存的关系数据数据库(mysql,oracle等) 或者nosql数据库(redis,芒果db等) 保存的时候可以增加微服务名称标识好知道是哪个微服务的sq ...
- Win10卸载python总是提示error2503失败各种解决办法
最近win10的电脑装了python的3.4,然后想卸载,就总是提示error 2053,类似于这种: 下面是我的坎坷解决之路: 1.网上说,任务管理器 --> 详细信息 --> expl ...
- hibernate 持久化对象 save
hibernate 持久化对象 save new出来的user对象是游离状态的对象,执行session.save()方法保存后,user对象就变为持久化了,持久化的对象跟数据库表双向绑定的意思, 对象 ...
- 闭包,协议delegate
1.定义 //1.闭包表达式语法 { (parameters) -> returnType in statements } let names = ["Chris", &qu ...
- day02-文件操作
文件操作. 1,文件路径:d:\python一定要学好.txt 2,编码方式:utf-8 gbk .... 3,操作模式:只读,只写,追加,读写,写读..... 不论哪种方式都只能执行一次.例如r模式 ...
- vue实现动态绑定class--(三目运算符)根据span数字内容改变其样式
一.根据span数字内容改变数字本身样式(两种样式) <template> //使用三目运算符,判断当span的val是否小于0给其不同的class名 <span class=&qu ...
- Office customUI中如何动态更新控件标题和图标?
本例,在Excel右键菜单中创建一个按钮,按钮的标题使用getLabel动态获取,图标使用getImage动态获取. customUI XML代码: <customUI xmlns=" ...