Log4j

本文详细介绍了JDK自带的日志记录器的使用,包括默认日志级别、自定义日志级别及配置文件logging.properties的设置。同时,文章也探讨了Log4j的日志管理,包括其默认配置、自定义配置log4j.properties以及如何通过配置将日志输出到不同级别文件。
摘要由CSDN通过智能技术生成

日志

  • 日志记信息,需要三个组件
    Logger 日志记录器
    Appender 指定输出位置 ---->Handle
    Layout 输出的格式------>Formatter

1. JDK原生自带的日志记录器

1.1. 默认日志级别


    /**
     * JDK原生自带日志记录器,默认使用日志级别
     * @author yxk
     * Date 2021/4/8 15:37
     */
    @Test
    public void test01() {
        //日志记录器
        Logger logger = Logger.getLogger("com.zy.log.TestLog");
        logger.info("普通正常信息");
        System.out.println("===================");
        logger.severe("严重信息");
        logger.warning("警告信息");
        logger.info("普通正常信息");
        //普通信息以下不显示
        logger.config("配置信息");
        logger.fine("友好信息");
        logger.finer("更友好信息");
        logger.finest("最友好信息");
    }

默认打印info及以上级别信息

1.2. 自定义日志级别

    /**
     * 自定义日志级别
     * @author yxk
     * Date 2021/4/8 15:37
     */
    @Test
    public void test02()  {
        //1.构建日志记录器-->可以指定包或类
        Logger logger = Logger.getLogger("com.zy");
        //2.关闭系统默认配置 日志顶级父类RootLogger 输出的位置在控制台,级别为INFO以下的不输出
        logger.setUseParentHandlers(false);
        //3.构建日志输出位置--->控制台
        ConsoleHandler consoleHandler = new ConsoleHandler();

        //构建日志输出位置--->文件
        //FileHandler fileHandler = new FileHandler("D:\\IDEA\\log\\1.log");

        //4.指定日志输出的格式
        SimpleFormatter formatter = new SimpleFormatter();
        //5.关联三个组件
        consoleHandler.setFormatter(formatter);
        logger.addHandler(consoleHandler);
        //6.设置日志输出级别
        logger.setLevel(Level.ALL);//记录全部
        consoleHandler.setLevel(Level.ALL);//控制台打印全部
        System.out.println("==============");
        logger.severe("严重信息");
        logger.warning("警告信息");
        logger.info("普通正常信息");
        logger.config("配置信息");
        logger.fine("友好信息");
        logger.finer("更友好信息");
        logger.finest("最友好信息");
    }

1.3. 配置文件logging.properties

#输出位置:控制台和文件
handlers= java.util.logging.ConsoleHandler,java.util.logging.FileHandler

#日志级别
.level= INFO

# 日志输出到文件中的配置
# %h指的是C://User//admin  ==>{user.home}
# %u指的是数字,依据下面的count  0-9
java.util.logging.FileHandler.pattern = %h/javaLog/java%u.log
#可以存放50000个字节
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 10
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter

#设置控制台打印的日志级别
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
 /**
     * 自定义properties配置文件logging.properties
     * @author yxk
     * Date 2021/4/8 16:20
     */
    @Test
    public void test03() throws IOException {

        //1.读取配置文件
        InputStream inputStream = TestLog.class.getClassLoader().getResourceAsStream("logging.properties");
        //2.构建日志管理器
        LogManager logManager =  LogManager.getLogManager();
        //3.读取io流的配置信息
        logManager.readConfiguration(inputStream);
        //4.构建日志记录器
        Logger logger = Logger.getLogger("com.zy.log");
        //5.日志输出
        logger.severe("严重信息");
        logger.warning("警告信息");
        logger.info("普通正常信息");
        System.out.println(1/0);
    }

2. Log4j

  • 依赖
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.2</version>
    </dependency>

2.1. 使用Log4j默认的配置

    @Test
    public void test01() {
        //1.初始化日志信息,使用默认的配置
        BasicConfigurator.configure();
        //2.构建log4j日志记录器,Logger的包的apache的,不是jdk的
        Logger logger = Logger.getLogger(TestLog4j.class);
        //3.日志输出
        logger.fatal("致命错误信息");
        logger.error("错误信息");
        logger.warn("警告信息");
        logger.info("普通信息");
        logger.debug("debug信息");
        logger.trace("跟踪信息");

Log4j日志等级分为6级:fatal,error,warn,info,debug,trace
默认打印debug及以上级别的信息

2.2. 自定义配置log4j.properties

  • 1.1日志输出到控制台
#日志输出位置 Appender
#日志记录器 = 日志输出等级,日志输出位置
log4j.rootLogger = WARN,console
#指定为控制台
log4j.appender.console = org.apache.log4j.ConsoleAppender
#日志输出格式 Layout
log4j.appender.console.layout = org.apache.log4j.SimpleLayoutt
  • 1.2日志输出到文件
#日志输出位置 Appender
#日志记录器 = 日志输出等级,日志输出位置
log4j.rootLogger = WARN,file
#指定日志输出到文件
#RollingFileAppender表示文件存储满了才会产生新的日志文件
log4j.appender.file = org.apache.log4j.RollingFileAppender
#默认以字节(B)为单位,也可以指定单位
log4j.appender.file.maxFileSize = 10MB
#日志输出的具体位置
log4j.appender.file.file = D:/javaLog/log4j.log
#指定日志文件的数量,超过10时会覆盖旧的日志文件
log4j.appender.file.maxBackupIndex = 10
#设置编码字符集
log4j.appender.file.encoding = UTF-8

#日志输出格式 Layout
#有4种格式,xml,html,simple,pattern
#pattern表示自定义格式,才有最后一句
log4j.appender.file.layout = org.apache.log4j.PatternLayout
# %d 日期 date
# [%t] 指当前的线程名 thread
# %p 输出优先级 privilege
# %c 类的全限定类名 class
# %m 输出日志中指定的日志信息
# %n 换行符
log4j.appender.file.layout.conversionPattern = %d  [%t] %p %c %x - %m%n

log4j.appender后面的第一个单词必须与log4j.rootLogger等号右边的第二个单词一致

日志信息格式部分符号的含义

  • 2.测试
    @Test
    public void test04() {
        //2.构建log4j日志记录器
        Logger logger = Logger.getLogger(TestLog4j.class);
        //3.日志输出
        logger.fatal("致命错误信息");
        logger.error("错误信息");
        logger.warn("警告信息");
        logger.info("普通信息");
        logger.debug("debug信息");
        logger.trace("跟踪信息");
    }
#日志输出位置 Appender
log4j.rootLogger = WARN,file,console
#指定日志输出到文件
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.maxFileSize = 10MB
log4j.appender.file.file = D:/javaLog/log4j.log
log4j.appender.file.maxBackupIndex = 10
log4j.appender.file.encoding = UTF-8
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.conversionPattern = %d{yyyy-MM-dd HH:mm:ss}  [%t] %p %c %x - %m%n

#指定日志输出到控制台
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern = %d{yyyy-MM-dd HH:mm:ss}  [%t] %p %c %x - %m%n

只要引入依赖和配置好og4j.properties,在项目启动时就会自动扫描日志配置文件

  • 根据日志级别输出到不同的文件
#日志输出位置 Appender
#日志记录器 = 日志输出等级,日志输出位置
log4j.rootLogger = INFO,console,info,warn,error,fatal

#指定输出到控制台
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] %p %c %x - %m%n

#指定为文件
#只输出INFO级别的日志到指定文件
log4j.appender.info = org.apache.log4j.RollingFileAppender
log4j.appender.info.maxFileSize = 10MB
log4j.appender.info.file = D:/javaLog/info/log4j.log
log4j.appender.info.Threshold = INFO
log4j.appender.info.maxBackupIndex = 10
log4j.appender.info.encoding = UTF-8
log4j.appender.info.layout = org.apache.log4j.PatternLayout
log4j.appender.info.layout.conversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] %p %c %x - %m%n
log4j.appender.info.filter.F1=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.info.filter.F1.LevelMin=INFO
log4j.appender.info.filter.F1.LevelMax=INFO

#只输出WARN级别的日志到指定文件
log4j.appender.warn = org.apache.log4j.RollingFileAppender
log4j.appender.warn.maxFileSize = 10MB
log4j.appender.warn.file = D:/javaLog/warn/log4j.log
log4j.appender.warn.Threshold = WARN
log4j.appender.warn.maxBackupIndex = 10
log4j.appender.warn.encoding = UTF-8
log4j.appender.warn.layout = org.apache.log4j.PatternLayout
log4j.appender.warn.layout.conversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] %p %c %x - %m%n
log4j.appender.warn.filter.F1=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.warn.filter.F1.LevelMin=WARN
log4j.appender.warn.filter.F1.LevelMax=WARN

#只输出ERROR级别的日志到指定文件
log4j.appender.error = org.apache.log4j.RollingFileAppender
log4j.appender.error.maxFileSize = 10MB
log4j.appender.error.file = D:/javaLog/error/log4j.log
log4j.appender.error.Threshold = ERROR
log4j.appender.error.maxBackupIndex = 10
log4j.appender.error.encoding = UTF-8
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.conversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] %p %c %x - %m%n
log4j.appender.error.filter.F1=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.error.filter.F1.LevelMin=ERROR
log4j.appender.error.filter.F1.LevelMax=ERROR

#只输出FATAL级别的日志到指定文件
log4j.appender.fatal = org.apache.log4j.RollingFileAppender
log4j.appender.fatal.maxFileSize = 10MB
log4j.appender.fatal.file = D:/javaLog/fatal/log4j.log
log4j.appender.fatal.Threshold = FATAL
log4j.appender.fatal.maxBackupIndex = 10
log4j.appender.fatal.encoding = UTF-8
log4j.appender.fatal.layout = org.apache.log4j.PatternLayout
log4j.appender.fatal.layout.conversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] %p %c %x - %m%n
log4j.appender.fatal.filter.F1=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.fatal.filter.F1.LevelMin=FATAL
log4j.appender.fatal.filter.F1.LevelMax=FATAL



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值