Java中Log4j的配置与使用详细解析

Log4j

  • Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件。

  • 也可以控制每一条日志的输出格式;

  • 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。

  • 这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

日志级别

debug调试 info信息 warn警告 error错误 fatal严重(从小到大)

  1. debug(调试):非常详细的代码运行记录
  2. info(信息):常规的信息输出【比较常用】,一般用于记录应用程序的运行状态和关键信息,如启动、关闭等
  3. warn(警告):程序中出现了一些不合理的情况,但是还没有达到影响运行的程度,不会导致程序立即停止。
  4. error(错误):程序中某个模块发生了错误,但是不影响整体的系统运行,只要妥善处理。例如捕获异常。
  5. fatal(严重):严重的错误不是来自于业务逻辑,可能来自于运行环境,可能会导致系统崩溃,一般用于记录程序运行过程中无法恢复的严重错误。例如:内存溢出
Log4j三大核心组件

1、Logger(日志记录器)

Logger是Log4j中负责记录日志的核心组件。他提供了各种日志记录方法,如debug()、info()、warn()、error()、fatal()等。

logger.debug("这是一个调试信息");
logger.info("这是一个信息");
logger.warn("这是一个警告");
logger.error("这是一个错误");
logger.fatal("这是一个致命错误");

2、Appender(日志输出器)

Appender负责将日志输出到指定的目的地。Log4j提供了多种Appender类型,如ConsoleAppender(控制台)、FileAppender(文件)、DailyRollingFileAppender(按日期滚动文件)等。

org.apache.log4j.ConsoleAppender //控制台
org.apache.log4j.FileAppender //⽂件
org.apache.log4j.DailyRollingFileAppender //每天产⽣⼀个⽇志⽂件
org.apache.log4j.RollingFileAppender //⽂件⼤⼩达到指定尺⼨时产⽣⼀个新⽂件
org.apache.log4j.WriterAppender //将⽇志以流格式发送到任意指定位置
org.apache.log4j.JDBCAppender //把⽇志⽤JDBC记录到数据库

3、Layout(日志格式化器)

Layout负责将日志信息格式化成特定的格式。常见格式有:

org.apache.log4j.HTMLLayout //HTML表格形式布局
org.apache.log4j.PatternLayout //根据模板布局
org.apache.log4j.SimpleLayout //包含⽇志信息级别和信息字符串
org.apache.log4j.TTCCLayout //包含⽇志产⽣的线程,类别,内容等信息
log4j.properties配置文件
# 设置输出器 [level,] appenderName1, appenderName2,....
# level为日志输出级别,默认为debug
log4j.rootLogger = debug,logger1,logger2# 输出源配置,通常包含以下两种结构:
# 声明输出源类型
# log4j.appender.输出源名称 = 输出源类型
# 为该输出源定义配置参数
# log4j.appender.输出源名称.配置参数名 = 配置参数值## 第一个输出源
# 使用控制台输出源类型(输出时会将信息打印到控制台上)
log4j.appender.logger1 = org.apache.log4j.ConsoleAppender
# 输出使用的目标对象
log4j.appender.logger1.Target = System.out
# 定义该输出源使用的布局  PatternLayout:格式字符串
log4j.appender.logger1.layout = org.apache.log4j.PatternLayout
# 定义布局格式  -:向左对齐
log4j.appender.logger1.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss,SSS} [%-5p] [%t] [%m]%n## 第二个输出源
# 使用每天产生一个新日志文件的输出源
log4j.appender.logger2 = org.apache.log4j.DailyRollingFileAppender
# 输出文件的路径
log4j.appender.logger2.File = logs/env-log
log4j.appender.logger2.datePattern='.'yyyy-MM-dd HH-mm'.log'
# 是否追加
log4j.appender.logger2.Append = true
# 输出级别
log4j.appender.logger2.Threshold = info
# 定义该输出源使用的布局
log4j.appender.logger2.layout = org.apache.log4j.PatternLayout
# 定义布局格式
log4j.appender.logger2.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%-5p] [%t] [%m]%n
基本使用

1、引入相关依赖:Log4j

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

2、导入包:import org.apache.log4j.Logger;

3、创建日志对象,参数为当前类的class

  • static Logger log = Logger.getLogger(Log4jExample.class);

import org.apache.log4j.Logger;public class Log4jExample {static final Logger logger = Logger.getLogger(Log4jExample.class);public static void main(String[] args) {// 输出不同级别的日志logger.fatal("这是一个致命错误");logger.error("这是一个错误");logger.warn("这是一个警告");logger.info("这是一个信息");logger.debug("这是一个调试信息");logger.trace("这是一个跟踪信息");}
}

最后:在Mybatis设置中设定STDOUT_LOGGING是标准的日志输出,也可以通过上述导包和依赖的方式,设置为Log4j

<!-- 开启SQL日志输出功能  STDOUT_LOGGING标准的日志输出-->
<setting name="logImpl"	value="STDOUT_LOGGING"/><setting name="logImpl"	value="log4j"/>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/57194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【视频编码】BD-BR和BD-PSNR

目录 1.BD-BR2.BD-PSNR 在视频编码标准中&#xff0c;常使用BD-BR来描述一个算法的优劣性。在评估新的算法时&#xff0c;需要测试4个码率点&#xff0c;获得对应的4个PSNR点&#xff0c;这样能够在R-D平面获取一条R-D曲线。同样地&#xff0c;基于前面4个码率点&#xff0c;在…

最佳简历--JAVA程序员的项目经验如何写

小熊学Java全能学习+面试指南:https://www.javaxiaobear.cn 首先你要明确,你能干什么,包括你自己编写的专业技能,到底会不会,怎么运用到技术上的? 1、你能干什么? 你能干什么,其实就展现你的能力,这是简历中最重要的部分,你需要证明前面说的你会的东东; 这就有点…

【前端】如何制作一个自己的网页(14)

当我们还需要对网页中的内容进行局部样式的修改。这时候&#xff0c;就需要用到HTML中的重要元素&#xff1a;span。 span是一个行内元素&#xff0c;可以对HTML文档中的内容进行局部布局。 如图&#xff0c;我们给标题和段落元素的部分内容设置了各种样式。 接下来&#xff0…

rk3588 opencv 的使用

-------------------------------------------------------------------------------------------------------- 目前是 3588 上无法 直接编译出 C程序。 报错如下&#xff1a; -----------------------------------------------------------------------------------------…

LeetCode 精选 75 回顾

目录 一、数组 / 字符串 1.交替合并字符串 &#xff08;简单&#xff09; 2.字符串的最大公因子 &#xff08;简单&#xff09; 3.拥有最多糖果的孩子&#xff08;简单&#xff09; 4.种花问题&#xff08;简单&#xff09; 5.反转字符串中的元音字母&#xff08;简单&a…

【版本管理】cmake 编译的 c++ 可执行文件输出 git commit 版本(即 hash 值)

文章目录 问题解决方法1. cmake 中获取 git version2. 程序中输出 git version3. 运行效果 问题 常常排查 bug 时&#xff0c;不知道当前运行的可执行文件到底是哪个版本代码编译出来的&#xff0c;无法快速判断需要修改哪一份代码。因此需要输出可执行文件的源码 git commit …

[ComfyUI]Flux:爆火禅语小和尚素材!禅意人生,享受自在

在快节奏的现代生活中&#xff0c;人们越来越渴望一种宁静和放松的状态。而禅意小和尚素材正是这样一种能够带给我们内心宁静和智慧的存在。ComfyUI的Flux框架结合了禅意小和尚素材&#xff0c;为我们提供了一个探索禅意人生的独特方式。 禅意小和尚素材源于佛教文化&#xff…

pod相关面试题总结(持续更新)

1:当一个Pod有多个容器时&#xff0c;如果连接到指定的容器&#xff1f; #查看当前空间下的pod [rootmaster210 pods]# kubectl get pods NAME READY STATUS RESTARTS AGE linux85-nginx-tomcat 2/2 Running 0 63s [rootmaster210 …

AJAX—— jQuery 发送 AJAX 请求

1、get 请求 $.get&#xff08;url&#xff0c;[ data ] , [ callback ] , [ type ]&#xff09; url &#xff1a;请求的 URL 地址 data &#xff1a;请求携带的参数 callback &#xff1a;载入成功时回调函数 type &#xff1a;设置返回内容格式&#xff08;xml&#xf…

UniHttp 框架,请求http接口

项目案例下载地址: https://download.csdn.net/download/jinhuding/89902024 1.快速开始 2.1引入依赖 <dependency><groupId>io.github.burukeyou</groupId><artifactId>uniapi-http

加密DNS有什么用?

在当今数字化高速发展的时代&#xff0c;网络安全和隐私保护成为人们日益关注的焦点。而加密 DNS作为一种新兴的技术手段&#xff0c;正逐渐发挥着重要的作用。 首先我们先来了解下什么是加密DNS&#xff0c;它究竟是什么&#xff1f; 加密DNS&#xff08;Domain Name System…

leetcode动态规划(十一)-分割等和子集

题目 416.分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5,…

如何进行数据库缩容 | OceanBase应用实践

作者&#xff1a;关炳文&#xff0c;爱可生 DBA 团队成员&#xff0c;负责数据库相关技术支持。 本文详细介绍了OceanBase V3.2版的集群中&#xff0c;面对数据文件缩容的场景的一套缩容方案&#xff0c;作为大家的参考。 缩容场景 某银行运行的一套采用1-1-1架构的OceanBase…

自动驾驶---基于dds/ros的通信中间件

1 背景 DDS&#xff08;数据分发服务&#xff0c;Data Distribution Service&#xff09;和ROS&#xff08;机器人操作系统&#xff0c;Robot Operating System&#xff09;是两种在各自领域内具有重要影响的技术。它们是两种不同的中间件&#xff0c;并且在分布式系统、尤其是…

源代码加密技术的一大新方向!

在当今这个信息爆炸的时代&#xff0c;企业所面临的数据安全挑战日益严峻。传统的文档加密方法已经无法满足日益复杂的安全需求。幸运的是&#xff0c;SDC沙盒加密系统以其革命性的安全理念和先进技术&#xff0c;为企业提供了一个更可靠、更高效的数据保护方案。 传统加密方案…

MySQL-16.DQL-分页查询

一.DQL-分页查询 -- 分页查询 -- 1. 从 起始索引0 开始查询员工数据&#xff0c;每页展示5条记录 select * from tb_emp limit 0,5; -- 2.查询 第1页 员工数据&#xff0c;每页展示5条记录 select * from tb_emp limit 0,5; -- 3.查询 第2页 员工数据&#xff0c;每页展示5条记…

Docker实战:从入门到进阶

Docker实战&#xff1a;从入门到进阶 引言 Docker是一个开源的应用容器引擎&#xff0c;它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中&#xff0c;然后发布到任何支持Docker的平台上。本文将通过实战和应用举例&#xff0c;带领大家深入了解Docker的强大…

【Kenel】基于 QEMU 的 Linux 内核编译和安装

文章目录 安装虚拟机系统共享目录编译内核卸载内核参考资料 本文主要记录个人做存储系统研究时&#xff0c;在 QEMU 环境下编译和安装 Linux 内核的过程 安装虚拟机系统 之前在 利用 RocksDB ZenFS 测试 ZNS 的环境搭建和使用 给出过借助 VNC 进行图形化安装的步骤&#xff…

使用 MySQL 从 JSON 字符串提取数据

使用 MySQL 从 JSON 字符串提取数据 在现代数据库管理中&#xff0c;JSON 格式因其灵活性而广泛使用。然而&#xff0c;当数据存储在 JSON 中时&#xff0c;我们经常需要将其转换为更易于处理的格式。本篇文章将通过一个具体的 SQL 查询示例&#xff0c;展示如何从存储在 MySQ…

利用Pix4D和ArcGIS计算植被盖度

除了水文分析和沟道形态分析之外&#xff0c;在实际工作中还要计算植被盖度&#xff01; 植被盖度&#xff0c;也称为植被覆盖率或植物覆盖度&#xff0c;是指某一地表面积上植物冠层垂直投影面积占该地表面积的比例。它通常以百分比的形式表示&#xff0c;是描述地表植被状况的…