日志框架--Log4j(一)

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

  1. 在程序运行过程中,验证传入的参数是否正确;
  2. 在软件的稳定期内,记录用户的每一步操作;

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

  1. 写着费劲,不能加入一些附加的东西;例如【日期】
  2. 写还是不写,不能灵活控制。只能通过注释掉代码才能控制;//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。

几个重要规则

  1. 级别的控制,就是只要大于等于指定的控制级别,就可以输出;
  2. 如果有多个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、用什么样的级别打印
 * @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有一点点的收获。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值