魔术桌
  • 更新日志
  • 新闻资讯
  • 数据资产
  • 网站导航
  • 订阅推荐
  • 商品推广
  • 日记
  • 摘录
  • 论文
  • 方案
  • 技术
  • 风格
  • 视觉
  • 原材料
  • 加工工艺
  • 元器件
  • 产品设备
  • 设计模式
  • 数据结构
  • 算法设计
  • 软件架构
  • 程序语言
  • 代码类库
  • 操作系统
  • 软件包
  • 健康
  • 环境
  • 社会
  • 道德
  • 法律
  • 经济
  • 政策
  • 更新日志
  • 新闻资讯
  • 数据资产
  • 网站导航
  • 订阅推荐
  • 商品推广
  • 日记
  • 摘录
  • 论文
  • 方案
  • 技术
  • 风格
  • 视觉
  • 原材料
  • 加工工艺
  • 元器件
  • 产品设备
  • 设计模式
  • 数据结构
  • 算法设计
  • 软件架构
  • 程序语言
  • 代码类库
  • 操作系统
  • 软件包
  • 健康
  • 环境
  • 社会
  • 道德
  • 法律
  • 经济
  • 政策
  • Language - Java - Java SE - 问题总结 - Java日志体系

文章摘要: Java日志体系。

简介

日志文件是用于记录系统操作事件的文件集合,可分为事件日志和消息日志。

主要功能

控制日志输出的内容和格式

控制日志输出的位置

日志优化、异步日志、日志文件的归档和压缩

日志系统的维护

面向接口开发的日志门面

日志实现日志门面
JUL
log4j2JCL
logbackSLF4J

注释

项目中必须要编写一个日志配置文件,否则在运行时会提示报错。

  • 当你的项目决定使用一个日志门面来标准化日志操作时,你需要为实际使用的日志实现(如Log4j、Logback)添加一个适配器。日志门面定义了一套统一的日志操作API,而适配器则是将这套API映射到具体的日志实现上。
  • 当你需要在项目中替换现有的日志框架,但又不想修改现有的代码时,可以使用桥接器。

日志框架实现

简要说明

  • 日志框架实现是指具体的日志记录库,提供了日志记录的实际功能,包括日志的创建、格式化、过滤、输出等。

详细总结

  • Log4j2详细总结:Library-Maven-Log4j2
  • Logback详细总结:Library-Maven-Logback

日志框架门面

简要说明

  • 日志框架门面是一个抽象层,它为不同的日志框架实现提供了一个统一的接口。门面模式允许应用程序使用门面提供的API进行日志记录,而无需直接依赖于具体的日志框架实现。

详细总结

  • SLF4J详细总结:Library-Maven-SLF4J

日志适配器

简要说明

  • 用于将一个日志门面与一个具体的日志实现连接起来。
  • 当应用程序使用某个日志门面(如SLF4J)时,如果希望使用不同的日志实现(如Log4j或java.util.logging)来记录日志,就需要相应的适配器。
  • Maven坐标的名称格式:<日志框架实现> - <日志框架门面> -impl

详细总结

日志桥接器

简要说明

  • 用于将一个日志实现的调用重定向到另一个日志实现的调用。
  • 这种转换允许现有代码(使用某个日志实现编写的)在不修改代码的情况下,使用新的日志框架。
  • Maven坐标的名称格式:<日志框架实现> -over- <日志框架实现>

详细总结

jcl和log4j2

<dependency> <!---->
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>
<dependency> <!---->
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.2</version>
</dependency>
<dependency> <!---->
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.2</version>
</dependency>
<dependency> <!--jcl日志框架门面-->
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-jcl</artifactId>
    <version>2.2</version>
</dependency>

slf4j和logback

<dependency> <!---->
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.3</version>
</dependency>
<dependency> <!---->
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.30</version>
</dependency>
<dependency> <!---->
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>

slf4j和log4j2

要使用SLF4J作为日志门面,并结合Log4j2作为日志实现,你需要以下依赖:

  1. SLF4J API: 这是SLF4J的核心库,它定义了日志抽象层。
  2. Log4j2 API: 这是Log4j2的API库,它定义了Log4j2的日志接口。
  3. Log4j2 Core: 这是Log4j2的实现库,它包含了Log4j2的核心功能。
  4. SLF4J to Log4j2 Adapter: 这是一个适配器库,它将SLF4J的调用转换为Log4j2的调用。

以下是Maven项目的依赖配置示例:

<dependencies>
    <!-- SLF4J API -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>版本号</version> <!-- 请替换为实际的版本号 -->
    </dependency>
    
    <!-- Log4j2 API -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>版本号</version> <!-- 请替换为实际的版本号 -->
    </dependency>
    
    <!-- Log4j2 Core -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>版本号</version> <!-- 请替换为实际的版本号 -->
    </dependency>
    
    <!-- SLF4J to Log4j2 Adapter -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>版本号</version> <!-- 请替换为实际的版本号 -->
    </dependency>
</dependencies>

配置Log4j2通常涉及创建一个log4j2.xml文件(或其他支持的配置文件格式)在你的src/main/resources目录下,来定义日志记录的规则和输出格式。以下是一个简单的配置示例:

<?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>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>
更新时间: 2025/11/16 17:17