日志框架之log4j学习总结

前不久学习到的log4j,有必要来总结一下啦~

  • 常用的值框架
 commons logging ,slf4j, log4j, logback, Jul(Java Util Logging)

简单介绍一下:
java.util.logging, JDK标准库中的类,是JDK1.4版本之后添加的日志记录的功能包
Log4j, 最强大的日志记录方式,可以通过配置 .properties 或 .xml 文件配置日志的目的地,格式等等。
commons-logging, 最综合和常见的日志记录方式,是java中的一个日志接口,一般会与log4j一起使用,自带simpleLog可用于日志记录。

好啦,下面重点总结log4j

1.Log4j的组成
Logging记录器 -> 常用的五个级别:DEBUG<INFO<WARN<ERROR<FATAL
appender输出源
layout布局 -> 四种日志输出样式:HTML、自由样式指定、包含日志级别与信息样式、包含日志时间,线程类别等信息的样式
2.Log4j的配置
 两种方式:配置日志的目的地,格式等等。
 1).properties文件
2).xml 文件
一般找到的基本上都是第一种方式配置的,我用的是第二种,xml文件配置方式
下面是我项目的配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
	
	<!-- console print -->
	<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%p] %d %c [%t] %L - %m%%%n" />
		</layout>

		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="levelMin" value="DEBUG" />
			<param name="levelMax" value="OFF" />
			<param name="AcceptOnMatch" value="true" />
		</filter>
	</appender>
	
	<!-- debug level daily file -->
	<appender name="FILE_DEBUG" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File" value="E://log_debug.log" />
		<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%p] %d %c [%t] - %m%n" />
		</layout>

		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="levelMin" value="DEBUG" />
			<param name="levelMax" value="DEBUG" />
			<param name="AcceptOnMatch" value="true" />
		</filter>
	</appender>

	<!-- info level daily file -->
	<appender name="FILE_INFO" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File" value="E://log_info.log" />
		<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%p] %d %c [%t] - %m%n" />
		</layout>

		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="levelMin" value="INFO" />
			<param name="levelMax" value="INFO" />
			<param name="AcceptOnMatch" value="true" />
		</filter>
	</appender>

	<!-- warn level daily file -->
	<appender name="FILE_WARN" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File" value="E://log_warn.log" />
		<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%p] %d %c [%t] - %m%n" />
		</layout>

		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="levelMin" value="WARN" />
			<param name="levelMax" value="WARN" />
			<param name="AcceptOnMatch" value="true" />
		</filter>
	</appender>
	
	<!-- error level daily file -->
	<appender name="FILE_ERROR" class="org.apache.log4j.DailyRollingFileAppender">

		<param name="File" value="E://log_error.log" />
		<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%p] %d %c [%t] - %m%n" />
		</layout>

		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="levelMin" value="ERROR" />
			<param name="levelMax" value="ERROR" />
			<param name="AcceptOnMatch" value="true" />
		</filter>
	</appender>
	
	<!-- '.'yyyy-MM-dd-HH-mm -->
	<!-- daily file info-->
	<appender name="DailyLog" class="org.apache.log4j.DailyRollingFileAppender">		
		<param name="File"  value="E://daily.log" />
		<param name="append" value="true" />
		<param name="DatePattern" value="'.'yyyyMMdd" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%m%n" />
		</layout> 
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="levelMin" value="INFO" />
			<param name="levelMax" value="OFF" />
			<param name="AcceptOnMatch" value="true" />
		</filter> 
	</appender>
	
	<logger name="com.test.TestLog4j" additivity="false">
			<level value="DEBUG" />
			<appender-ref ref="STDOUT"/>
			<appender-ref ref="DailyLog" />
			
	</logger>
	
	<root>
		<level value="INFO" />
		<appender-ref ref="STDOUT" />
		<appender-ref ref="FILE_DEBUG" />
		<appender-ref ref="FILE_INFO" />
		<appender-ref ref="FILE_WARN" />
		<appender-ref ref="FILE_ERROR" />		
	</root>
</log4j:configuration>


3.Log4j日志的级别
ALL<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<OFF
常用 DEBUG INFO WARN ERROR 这四种,对于每种不同级别的操作,demo中已经全部测试完毕
4.哪些情况下必须要打日志
1)系统启动参数,环境变量
2)异常的捕获处
3)函数获得期望之外的结果时
4)关键操作

之前对日志并不是很上心,以为没有什么用,后来才发现,日志很重要,生产环境中,一旦程序出现问题,只能从输出的日志中查看问题所在并对其进行相应的解决,可能有些人会觉得log日志跟system.out.print没什么区别,在开发环境中,用system.out完全没有什么大问题,哪里有问题直接打印在了控制台中,但如果是生产环境,那么大的一个项目,很难找出准确的问题,难道要一个一个out去看嘛,这个时候,日志就起到了非常重要的作用。

好啦,把我的demo贴上:
  • TestLog4j.java
package com.test;


    
    
import org.apache.log4j.Logger;
public class TestLog4j {
private static final Logger logger = Logger.getLogger(TestLog4j.class); /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub logger.debug("hey.I am debug"); logger.info("I am right info"); logger.warn("attention!I am warn"); logger.error("oh,it's error"); logger.fatal("I am fatal"); // log.off("I am off"); //没有off方法 } }
输出如下:

今天先这样啦,有了新的心得再补充啦~~








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值