JAVALog4日志学习笔记
log4j.rootLogger=debug,c (设置日志级别,c是变量,可以有很多)
log4j.appender.c = org.apache.log4j.ConsoleAppender(把日志打印到控制台)
log4j.appender.c.Target = System.out(控制台)
log4j.appender.c.layout = org.apache.log4j.PatternLayout(布局方式—一般就都是这种自由方式布局)
log4j.appender.c.layout.ConversionPattern = [%-5p]%d{yyyy-MM-ddHH:mm:ss,SSS}method:%l%n%m%n(日志打印的内容)
Log4j日志级别
每个logger都有一个日志级别(log level),用来控制日志信息的输出,日志级别从高到低分为
1. off最高等级,用于关闭所有日志记录 2. fatal指出每个严重的错误事件将会导致应用程序的退出 3. error指出虽然发生错误事件,但任然不影响系统的继续运行 4. warn表明会出现潜在的错误情形 5. info一般和在粗粒度级别上,强调应用程序的运行全程 6. debug一般用于细粒度级别上,对调试应用程序非常有帮助 7. all最低等级,用于打开所有日志记录
|
log4j提供的追加器(appender)有以下几种
1. org.apache.log4j.ConsoleAppender(控制台) 2. org.apache.log4j.FileAppender(文件) 3. org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件) 4. org.apache.log4j.RollingFileAppender(文件大小达到指定大小时产生一个新的文件) 5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) |
log4j几种布局方式
1. org.apache.log4j.HTMLLayout(以HTML表格形式布局) 2. org.apache.log4j.PatternLayout(可以灵活低指定布局格式) 3. org.apache.log4j.SimpleLayout(包含日志信息级别和信息字符串) 4.org.apache.log4j.TTCCLayout(包含日志产生的时间,线程,类别等等信息) |
将日志打印到E:/log/error.log盘符下面,代码如下
log4j.appender.f = org.apache.log4j.DailyRollingFileAppender log4j.appender.f.File = E:/log/error.log log4j.appender.f.Append = true(是否追加信息) log4j.appender.f.Threshold = debug(错误信息的级别) log4j.appender.f.layout = org.apache.log4j.PatternLayout log4j.appender.f.layout.ConversionPattern =[%-5p]%d{yyyy-MM-ddHH:mm:ss,SSS}method:%l%n%m%n |
Log4j采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下
1.%m输出代码中指定的信息 2.%p输出优先级,及debug,info,warn,erroe,fatal 3.%r输出自应用启动到输出该log信息耗费的毫秒数 4.%c输出所属的类目,通常就是所在类的全名 6.%t输出产生该日志事件的线程名 7.%n输出一个回车换行符,Windows平台为“m”,Unix平台为“n” 8.%d输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如%d{yyyy-MM-ddHH:mm:ss,SSS} 9.%l输出日志事件的发生位置,包括类全名,发生的线程,以及在代码中的行数, |
Log4j测试日志类代码
package log4jtest;
import org.apache.log4j.Logger;
publicclass Log4j_tx { //指定要打印日志的类 static Logger logger=Logger.getLogger(Log4j_tx.class);
publicstaticvoid main(String[] args){ logger.debug("我是第一个debug日志"); logger.info("我是第一个info日志"); logger.error("我是第一个error日志"); logger.warn("我是第一个warn日志");
} } |
Log4j怎么加到项目中
例如
封装的工具类
package log4jUtil;
import java.io.PrintWriter; import java.io.StringWriter; /** * 对于log4j的日志信息进行封装 * * @author Administrator * */ publicclass LogUtil { publicstatic String printloginfo(Exception e){ StringWriter sw=new StringWriter(); e.printStackTrace(new PrintWriter(sw,true)); String str=sw.toString(); return str; } } |
Try-catch代码块
try { //正常代码块 } catch (Exception e) { logger.debug("在干什么事情的时间报了什么错误"+LogUtil.printloginfo(e)); } |