您的位置:首页 > 其它

日志框架--Log4j(一)

2017-03-14 09:45 155 查看

日志框架的作用(干什么)

在程序运行过程中,验证传入的参数是否正确;

在软件的稳定期内,记录用户的每一步操作;

为什么不直接用System.out.println()?

写着费劲,不能加入一些附加的东西;例如【日期】

写还是不写,不能灵活控制。只能通过注释掉代码才能控制;
//System.out.println()


Log4j

介绍

Log4j是Apache的一个开源的项目。通过使用Log4j,可以控制日志信息输送的目的地有:控制台、文件、GUI组件、甚至是套接口服务器、NT事件记录器等;也可以控制日志的输出格式;通过第一每一条日志信息的级别,能够更加细致地控制日志的生成过程。

是什么

一个开源的、轻量级的、用于日志管理的框架。

有什么

Log4j三个重要的组件构成:

日志信息的输出格式;

日志信息的优先级;

日志信息的输出目的地;

properties

每一行都是键值对,key=value;(key值须唯一)

#代表注释

properties文件里,本身不支持中文(我们的eclipse装了propedit插件,可以支持中文转换)

Log4j.properties

# non-root loggers
# log4j.rootLogger=debug,hello.File,hello.Console

log4j.appender.hello.File=org.apache.log4j.DailyRollingFileAppender
# 这是一个输出目的地,目的地是按天卷动的文件
# key都是可以用.分开的
# [log4都是给log4j用的].[appender(目的地)/logger(控制单元)本质]
# appender [变量名]=对应log4j的appender类对象
# Appender hello.File=new org.apache.log4j.DailyRollingFileAppender();
log4j.appender.hello.File.file=palmpay.log
# 相当于"hello.File"这个变量的setter
# hello.File.setFile("palmpay.log");
log4j.appender.hello.File.DatePattern=.yyyy-MM-dd
# hello.File.setDatePattern(".yyyy-MM-dd");
log4j.appender.hello.File.layout=org.apache.log4j.PatternLayout
# Layout layout=new org.apche.log4j.PatternLayout();
log4j.appender.hello.File.layout.ConversionPattern=%d(HH:mm:ss,SSS) %5p (%C(1):%M) - %m%n
# Layout layout.setConversionPattern("%d(HH:mm:ss,SSS) %5p (%C(1):%M) - %m%n");
#输出的目的地,输出到哪儿,Daily[按天]Rolling[滚动]File[文件]Appender[目的地]
#今天的日志打印到palmay.log
#之前每天的日志,各自打印到对应的天数的文件里
#日志输出的信息,[%m%n代表信息本身][%d(HH:mm:ss,SSS) %5p (%C(1):%M) 代表附件在信息之前的其它东西]
#[%d(HH:mm:ss,SSS)--时间]
#[%5p--级别]
#[(%C(1):%M)--类、方法]

log4j.appender.hello.Console=org.apache.log4j.ConsoleAppender
log4j.appender.hello.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.hello.Console.layout.ConversionPattern=%d(HH:mm:ss,SSS) %5p (%C(1):%M) - %m%n
#目的地和格式之间的关系,每个目的地各自制定各自的信息格式

log4j.logger.com.hello=debug,hello.File,hello.Console
log4j.logger.com.hello.log4j=info,hello.File,hello.Console
#logger,是控制日志输出的最小单元
# key的除"log4j.logger"后的剩余部分,是个包名(管理它和它的子包下的所有类)
# value的部分=第一个是"级别",后面是对多个目的地的应用(使用逗号分开)


日志级别

Log4j有如下级别

OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。
Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。


几个重要规则

级别的控制,就是只要大于等于指定的控制级别,就可以输出;

如果有多个logger,都可以匹配输出,则每个logger都产生输出;而级别控制来源于路径最详细的logger;

###如何获得日志操作类

public class A{

private static Logger logger = Logger.getLogger(A.class);

}

代码示例:

package com.hello.log4j;

import org.apache.log4j.Logger;

/**
* 1、如何取logger
*   这个logger可以被几个log4j.logger管理
* 2、用什么样的级别打印

4000
* @author tianye
*
*/
public class TestLog4j {
//用类对象来取得logger,就相当于是全类名
private static final Logger logger = Logger.getLogger(TestLog4j.class);

public static void main(String[] args) {
logger.debug("debug");
logger.info("info");
logger.warn("warn");
logger.error("error");

}
}


完整案例展示链接

github下载链接

完成案例源码下载链接

最后,谢谢支持,希望你可以通此篇小文对Log4j有一点点的收获。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息