Log4j笔记
? 为什么要使用日志
? 开发阶段可以发现程序的问题,排错 ? 产品阶段可以记录程序运行的状况 ? Log4j就是一个简便的日志管理工具 ? System.out.println()的问题
? 不能在运行过程中打开或者关闭 ? 不能有针对性地选择 ? 输出的信息没有分级 ? 只能输出文本信息 ? 不能改变输出的位置
Log4j可以解决以上的所有问题 ? log4j简介
? 是最流行的Java日志处理框架 ? Apache的子项目 ? 开源 ? log4j的使用
? 需要从Apache官方网站上下载jar包 ? 添加到项目的Build Path里 ? 使用示例 Test.java package com.zxj; import org.apache.log4j.Logger; public class Test { } private static Logger logger = Logger.getLogger(Test.class); public static void main(String[] args) { } // TODO Auto-generated method stub logger.debug(\); logger.info(\); logger.error(\); 运行这个程序,需要log4j.properties文件 src下建立这个文件 log4j.rootLogger=warn,Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout warn是指输出的日志级别;大于等于这个级别的输出才会执行,小于此级别的不会输出;级别有8种,名称固定
Console:输出的位置或者目的地,这个名字是别名,可以任意起名字 在第二行针对这个目的地进行设置
如果上面叫aaa
第二行就是log4j.appender.aaa
第三行可以设置输出目的地的一些配置信息,最常用的是输出的布局格式 对于输出到文件,还需要在这个位置指定文件的路径
log4j的核心 ? Logger
完成日志信息的处理,可以定义输出的层次和决定信息是否输出 输出的优先级顺序:
ALL,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF ALL
? Appender
设置日志信息的去向,可以同时指定多个目的地。 log4j.appender.appenderName=Appender.class log4j.appender.appenderName.optiona1=value1 …
log4j.appender.appenderName.optionaN=valueN 常用的有如下:
org.apache.log4j.ConsoleAppender 控制台 org.apache.log4j.FileAppender 文件
org.apache.log4j.DailyRollingFileAppender 每天产生一个日志文件 org.apache.log4j.RollingFileAppender 文件尺寸到一定大小产生新文件 org.apache.log4j.WriterAppender 将日志以流的方式发送 org.apache.log4j.JdbcAppender 将日志保存到数据库 ? Layout
设置日志信息的输出样式 配置格式:
log4j.appender.appenderName.layout=Layout.class log4j.appender.appenderName.layout.option=value 常用:
org.apache.log4j.HTMLLayout 以HTML表格形式布局
org.apache.log4j.SimpleLLayout 包含日志级别和信息字符串
org.apache.log4j.TTCCLayout 包含日志产生的时间,执行者,类别等 org.apache.log4j.PatternLayout 灵活指定 %p 输出优先级 %r 输出自应用启动到输出信息所耗费的毫秒数 %t 输出产生该日志事件的线程名 %f 输出所属类名 %c 输出类的全名称 %d 输出日志产生时间或者日前,后面用{yyyy-MM-dd HH-mm-ss}指定 %l 输出所处行号 %m 具体信息
%n 换行 ? 配置文件
? log4j.properties
log4j.rootLogger=级别,去向。。。 级别只能有一个,去向可以有多个 log4j.appender.去向=
log4j.appender.去向.layout= ? log4j.xml 基本思路同上
示例:输出到文件
log4j.rootLogger=debug,aa
log4j.appender.aa=org.apache.log4j.FileAppender log4j.appender.aa.File=c:\\\\log.html
log4j.appender.aa.layout=org.apache.log4j.HTMLLayout
这个概念和C语言里面的预编译指令很类似 总结:
使用方法:导包,在SRC下编写log4j.properties属性文件(级别,去向,去向配置),在程序里面输出 属性文件里面的注释:#