1、Log4j入门案例

Log4j是Apache下的一款开源的日志框架。 官方网站: http://logging.apache.org/log4j/1.2/,这是一款比较老的日志框架,目前新的log4j2做了很大的改动,任然有一些项目在使用log4j。

第一步:创建maven项目,添加依赖

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.example</groupId>
	<artifactId>logging-test</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<properties>
		<maven.compiler.source>8</maven.compiler.source>
		<maven.compiler.target>8</maven.compiler.target>
	</properties>

	<dependencies>
		<dependency>
			<artifactId>junit</artifactId>
			<groupId>junit</groupId>
			<version>4.12</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/log4j/log4j -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.8.1</version>
				<configuration>
					<source>${maven.compiler.source}</source>
					<target>${maven.compiler.target}</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

第二步:创建测试类

package com.example.test;

import org.apache.log4j.Logger;
import org.junit.Test;

public class TestLog4j {

	private static final Logger logger = Logger.getLogger(TestLog4j.class);
	
	@Test
	public void testLog4j() {
		// 日志级别 
		logger.fatal("fatal"); // 严重错误,一般会造成系统崩溃 和终止运行 
		logger.error("error"); // 错误信息,但不会影响系统运行 
		logger.warn("warn"); // 警告信息,可能会发生问题 
		logger.info("info"); // 程序运行信息,数据库的连接、网 络、IO操作等 
		logger.debug("debug"); // 调试信息,一般在开发阶段使 用,记录程序的变量、参数等 
		logger.trace("trace"); // 追踪信息,记录程序的所有流程 信息
	}
}

运行我们发现没有打印

在这里插入图片描述

原因
因为log4j默认既没有编程式配置也没有默认配置文件配置。不像JUL有个默认的配置文件,而log4j没有提供默认配置。发现会有一些警告,JUL可以直接在控制台输出是因为他有默认的配置文件,而这个独立的第三方的日志框架却没有配置文件

解决方案

package com.example.test;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.junit.Test;

public class TestLog4j {

	private static final Logger logger = Logger.getLogger(TestLog4j.class);
	
	@Test
	public void testLog4j() {
		BasicConfigurator.configure();
		// 日志级别 
		logger.fatal("fatal"); // 严重错误,一般会造成系统崩溃 和终止运行 
		logger.error("error"); // 错误信息,但不会影响系统运行 
		logger.warn("warn"); // 警告信息,可能会发生问题 
		logger.info("info"); // 程序运行信息,数据库的连接、网 络、IO操作等 
		logger.debug("debug"); // 调试信息,一般在开发阶段使 用,记录程序的变量、参数等 
		logger.trace("trace"); // 追踪信息,记录程序的所有流程 信息
	}
}

测试结果图

在这里插入图片描述

从打印日志结果图看出,BasicConfigurator.configure();基本配置的级别为debug

从BasicConfigurator.configure();方法的源码看这一行代码给我们的RootLogger加入一个控制台的输出源,就和jul中的handler一样:

    public static void configure() {
        Logger root = Logger.getRootLogger();
        root.addAppender(new ConsoleAppender(new PatternLayout("%r [%t] %p %c %x - %m%n")));
    }

log4j定义了以下的日志的级别,和JUL的略有不同:

  1. fatal 指出每个严重的错误事件将会导致应用程序的退出。
  2. error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
  3. warn 表明会出现潜在的错误情形。
  4. info 一般和在粗粒度级别上,强调应用程序的运行全程。
  5. debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
  6. trace 是程序追踪,可以用于输出程序运行中的变量,显示执行的流程。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值