java日志框架总结(三 、Log4j日志框架)

一、简介

Log4j ( Logger For Java ) , Java 日志的记录包。 官方网站 。Log4j 是 Apache 的一个开源项目, 为Java提供了日志记录功能。能够让程序员非常方便的记录日志, 并且提供了多种适配方式,能满足各种需求。

使用Log4j 只需要导入一个jar包,jar 下载地址。 Maven 坐标为:

XML 复制代码
<dependency>
    <groupId>org.log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.9</version>
</dependency>

二、Log4j 组成

Log4j 有三个主要组件------loggers、appender 和 layouts ------它们可以一起使用,以在所需的目的地打印自定义的日志语句。其中对应着下面三个部分:

  • Level : 日志等级, 用于定义日志的重要程度
  • Appender: 追加器, 用于定义日志的输出位置
  • Layout: 布局, 用于定义日志的输出格式
1)Logger

Logger 对象负责展现日志记录信息。它是 Log4j 架构中的第一个必须层。Logger 类在包 org.apache.log4j 中定义。

通常,我们为每个应用类创建一个 Logger 实例来记录属于该类的重要事件。此外,我们通常使用接受类名作为参数的静态工厂方法在类的开头创建此实例:(与JUL类似)

java 复制代码
private static final Logger logger = Logger.getLogger(JavaClass.class.getName());

Log4j 日志等级有:

  • off: 关闭日志 , 最高等级, 任何日志都无法输出
  • fatal,: 灾难性错误, 在能够输出日志的所有等级中最高
  • error:错误, 一般用于异常信息
  • warn:警告, 一般用于不规范的引用等信息
  • info: 普通信息
  • debug: 调试信息, 一般用于程序执行过程
  • trace: 堆栈信息, 一般不使用
  • all: 打开所有日志, 最低等级, 所有日志都可使用

在 Logger 核心类中, 除了 off/all 以外, 其他每个日志等级都对应一组重载的方法, 用于记录不同等级的日志

当且仅当 方法对应的日志等级 大于等于 设置的日志等级时, 日志才会被记录

2)Appender(追加器)

Appender 用于定义日志的输出位置, Log4j 提供了多种可供选择的追加器。常用追加器有

Appender的作用:

ConsoleAppender:将日志记录在控制台

FileAppender:将日志记录在文件中

RollingFileAppender:将日志记录在文件中, 当文件达到一定大小之后,会创建新文件

DailyRollingFileAppender:将日志记录在文件中, 每天一个备份文件

JDBCAppender:将日志记录在数据库表中

以上五个为常用Appender,完整列表为

当然, 如果觉得这些也不能满足你的需求, 你可以:

  • 实现 Appender接口 implements Appender
  • 继承 AppenderSkeleton类 重写核心方法
3)Layout (布局)

Layout 用于定义输出日志的格式, 常用Layout 有

Layout的格式

SimpleLayout:简单格式, 格式为 日志等级 - 日志内容

TTCCLayout :Time,Thread,Category,Context [线程] 日志等级 记录日志的类的包名.类名 - 日志内容

XMLLayout:以XML格式输出日志

HTMLLayout :以HTML文件格式输出日志

PatternLayout :灵活格式输出日志, 使用通配符自定义格式

以上五个为常用Layout ,完整列表为

相关推荐
木鹅.14 小时前
聊天记忆
java
Looooking14 小时前
Python 之 psutil 模块使用详解
python·psutil
我命由我1234514 小时前
Java 开发使用 MyBatis PostgreSQL 问题:使用了特殊字符而没有正确转义
java·开发语言·数据库·postgresql·java-ee·mybatis·学习方法
源码获取_wx:Fegn089514 小时前
基于springboot + vue图书商城系统
java·vue.js·spring boot·后端·spring·课程设计
free-elcmacom14 小时前
机器学习进阶<6>神奇的披萨店与学区房:走进RBFN的直觉世界
人工智能·python·机器学习·rbfn
未秃头的程序猿14 小时前
解决ShardingSphere分片算法在Devtools热重启后SpringUtil.getBean()空指针问题
java·后端
better_liang14 小时前
每日Java面试场景题知识点之-RabbitMQ
java·消息队列·rabbitmq·面试题·异步通信·企业级开发·系统解耦
芒克芒克14 小时前
《Git分支实战:从创建到合并的全流程》
java·git
Chloeis Syntax14 小时前
MySQL初阶学习日记(5)--- 联合查询
java·笔记·学习·mysql
ArabySide14 小时前
【Spring Boot】用Spring AOP优雅实现横切逻辑复用
java·spring boot·后端