• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

日志工具包

武飞扬头像
风生u
帮助1

在Java项目中常见的日志工具包:

Log4j:Apache推出的日志工具。与2012年5月发布1.2.17版本后停止更新。
Logback:属于Log4j的继承者。Spring Boot默认日志文件支持类型。
Log4j2:属于Log4j升级版,同时里面还包含了Logback的很多改进。
commons-logging:Apache早期基于门面(Facade)设计模式的日志包,提供了日志解构能力,按照顺序寻找当前项目日志接口实现、Log4j、JDK Log、SimpleLog
Slf4j( Simple Logging Facade for Java ):目前使用非常多的门面日志。统一项目中日志。
JDK Logging:JDK自带的日志API

1.JDK Logging

JDK Logging 是JDK自带的日志工具。存在于java.util.logging包中。
日志级别: // OFF > SEVERE > WARNING > INFO > CONFIG > FINE > FINER > FINEST > ALL

public class Demo {
    public static void main(String[] args) throws IOException {
    	
        Logger logger = Logger.getLogger("Demo(一般写类名)");
        // 默认为INFO级别,同时设置当前和父处理器级别才能修改
        // OFF > SEVERE > WARNING > INFO > CONFIG > FINE > FINER > FINEST > ALL
        logger.setLevel(Level.INFO);//全局输出级别
        Handler[] handlers = logger.getParent().getHandlers();// 获取输出控制台的处理器
        handlers[0].setLevel(Level.INFO);//控制台输出级别

        // 默认没有输出到文件,只输出到控制台,通过添加Handler增加输出目的地,输出到文件中
        FileHandler fh = new FileHandler("my.log");// 如果路径夹会不存在文件夹会报错
        fh.setFormatter(new SimpleFormatter());// 设置输出内容为普通格式
        logger.addHandler(fh);

        logger.severe("severe");// 严重
        logger.warning("warning");// 警告
        logger.info("info");// 信息
        logger.config("config");// 配置
        logger.fine("fine");// 详细
        logger.finer("finer");// 较详细
        logger.finest("finest");// 非常详细
    }
}
学新通

2.Log4j

日志级别: fatal(致命错误) > error(错误) >warn(警告) >info(普通信息) >debug(调试信息)>trace(跟踪信息)
1.导入依赖

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

2.编写配置文件
在resources中新建log4j.properties,名称不要写错了
log4j.properties文件必须放在resources文件夹下

# log4j中定义的级别:fatal(致命错误) > error(错误) >warn(警告) >info(普通信息) >debug(调试信息)>trace(跟踪信息)
log4j.rootLogger = DEBUG , console , D //这里配置的是debug表示只能输出debug及以上级别的日志 

### console ###
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = [%p] [%-d{yyyy-MM-dd HH\:mm\:ss}] %C.%M(%L) | %m%n

### log file ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D:/log4j.log
log4j.appender.D.Append = true
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = [%p] [%-d{yyyy-MM-dd HH\:mm\:ss}] %C.%M(%L) | %m%n

3.测试类

// 不要导错包了
import org.apache.log4j.Logger;
public class TestLog4j {
    public static void main(String[] args) {
        Logger logger = Logger.getLogger(TestLog4j.class);
        logger.trace("跟踪级别");
        logger.debug("调试信息");
        logger.info("普通信息");
        logger.warn("警告信息");
        logger.error("错误信息");
        logger.fatal("重大错误信息");
    }
}

Log4j2

1.pom.xml
虽然只导入了log4j-core,但是实际导入log4j-core和log4j-api

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.17.2</version>
        </dependency>

Log4j2不再支持Log4j的.properties格式配置文件。而是支持.xml、.json、jsn.
在resource目录新建log4j2.xml

<?xml version="1.0" encoding="utf-8" ?>
<Configuration >
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">//输出到控制台格式
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <File name="log" fileName="log/test.log" append="true">//输出到本地文件格式
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </Appenders>
    <Loggers>
        <Root level="info">//日志输出级别,输出到哪
            <AppenderRef ref="Console"/>//输出到控制台
            <AppenderRef ref="log"/>//输出到本地文件
        </Root>
    </Loggers>
</Configuration>
学新通

测试

// 千万别导错包了
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class TestLog4j {
    public static void main(String[] args) {
        Logger logger = LogManager.getLogger(TestLog4j.class);
        logger.trace("跟踪级别");
        logger.debug("调试信息");
        logger.info("普通信息");
        logger.warn("警告信息");
        logger.error("错误信息");
        logger.fatal("重大错误信息");
    }
}

SLF4j

SLF4j是日志的接口声明,不参与日志的具体实现。需要配合其他日志具体实现工具包才能进行使用。每次添加其他日志工具包时,不要忘记SLF4j整合这个日志的依赖。
SLF4J支持多种日志实现,但是在项目中整合依赖最好只有一个,否则会出现警告
导入3个依赖,分别代表slf4j依赖、整合依赖、log4j的依赖。

整合Log4j

<!-- slf4j的依赖 -->
		<dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.36</version>
        </dependency>
        <!--slf4j整合log4j的依赖,版本要和slf4j的版本对应 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.36</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
学新通

测试:

public class Test {
    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(Test.class);

        logger.trace("trace");
        logger.debug("debug");
        logger.info("info");
        logger.warn("warn");
        logger.error("error");
    }
}

整合Log4j2
配置pom.xml
与SLF4J整合Log4j的整合包是不一样的。

    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.36</version>
        </dependency>
        <!-- SLF4j整合Log4j2的依赖 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.17.2</version>
        </dependency>
        <!-- Log4j2工具的依赖-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.17.2</version>
        </dependency>
    </dependencies>
学新通

测试

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgcafif
系列文章
更多 icon
同类精品
更多 icon
继续加载