log4j
log4j的作用
什么是日志:日志是系统运行过程中的后台输出信息,方便程序员进行系统运行的管控以及Bug的查找。
什么是log4j
log4j是个日志输出的插件.专门用来进行日志的管理的。由 apache推出的开源免费日志处理的类库。
传统方式获取日志:
使用 system.out.println()语句进行后台打印
问题:
1、日志信息无法保存
2、无法显示完整日志信息
3、日志的显示设有级别,所有的日志混杂在一起显示(无法进行日志信息筛选)
4、日志显示格式不友好.
解决:使用log4j
使用log4j进行日志管理:
特点:
1、日志可以单独保存在文件中
2、可以获取完整的日志信息
3、可以进行日志显示的筛选
4、格式友好
log4j的级别
FATAL:致命的错误ERROR:异常错误
WARN:警告
INFO:信息(方法级别)
DEBUG:调试(代码级别)
log4j的配置文件解释
注意:配置文件一定要存放在src下,并命名为log4j.properties//设置全局默认配置(在 log4j.properties 的第一行中控制输出级别INFO,大于等于INFO的级别都可以输出;输出目的地CONSOLE(控制台), LOGFILE(文件))
log4j. rootCategory=INFO, CONSOLE, LOGFILE
//设置某个包或者某个类或者某个方法的日志级别和输出位置
log4j.lagger.包名= FATAL, CONSOL, LOGFILE
log4j.lagger.包名.类名= FATAL, CONSOL, LOGFILE
log4j.lagger.包名.类名.方法名= DEBUG, CONSOLE, LOGFILE
//设置控制台输出配置
log4j.appender.console = org.apache.log4j.ConsoleAppender //负责输出的类
log4j.appender.console.Threshold = error
log4j.appender.console.layout = org.apache.log4j.PatternLayout //输出的格式:表达式进行输出
log4j.appender.console.layout.ConversionPattern = %m%n //ConversionPattern:表达式内容
//设置文件输出配置
log4j.appender.LOGFILE = org.apache.log4j.FileAppender //负责往文件输出的类
log4j.appender.LOGFILE.File = logs/log.log //log4j.appender.LOGFILE.File 文件位置及名称(日志文件扩展名.log)(默认项目根目录)
log4j.appender.LOGFILE.Append = true //是否往文件追加,true 追加 ;false 先清空再写
log4j.appender.LOGFILE.Threshold = INFO
log4j.appender.LOGFILE.layout = org.apache.log4j.PatternLayout //输出的格式:表达式进行输出
log4j.appender.LOGFILE.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
常用的输出格式:
%p-%d{yyyy/MM/dd hh:mm:ss}-%l-%m%n
log4j的使用流程
导入log4j的jar包: log4j-xxx.jar配置log4j的配置文件:在 src 下新建 log4j.properties(路径和名称都不允许改变)
在使用log4j的类中声明全局的Logger对象
public static Logger logger=Logger.getLogger (类名.class);
使用 Logger 对象调用日志方法进行日志输出语句声明
logger.debug("我是debug信息"); //一般在方法内部使用
logger.info("我是info信息"); //一般在调用方法使用
logger.warn("我是警告信息"); //一般在需要警告的位置使用
logger.error("我是错误信息"); //在catch代码块中使用
logger.fatal("我是致命的错误信息"); //在catch代码块中使用
ConversionPattern 日志信息,符号所代表的含义
-X号: X信息输出时左对齐;%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MM dd HH:mm:ss},输出类似:2002 10 18 22:10:28
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%C: 输出日志信息所属的类目,通常就是所在类的全名(包名+类名)
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个"%"字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。