Log4j入门使用(小白必读!!)

发布时间 2023-11-17 16:59:00作者: 锦湘

Hi i,m JinXiang


⭐ 前言 ⭐

本篇文章主要介绍Log4j入门使用以及部分理论知识

本篇又称(Log4j日志级别及使用规范)

?欢迎点赞 ? 收藏 ⭐留言评论 ?私信必回哟?

?博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言

 

什么是Log4j?

Apache的开源项目Log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。

Log4j由三个重要的组件构成:

  • 1、日志信息的优先级
  • 2、日志信息的输出目的地
  • 3、日志信息的输出格式

日志信息的优先级从高到低有 fatal 、error、warn、 info、debug 等不同级别的程序执行记录信息,这些一般是给程序员或运维看的,一般在出现异常问题的时候,可以通过系统日志中记录的关键参数信息和异常提示,快速排除故障。

 

为什么要使用Log4j(使用Log4j的好处)?

1、 Log4j通过修改配置文件,就可以决定log信息的目的地——控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器等。

2、通过修改配置文件,可以定义每一条日志信息的级别,从而控制是否输出。在系统开发阶段可以打印详细的log信息以跟踪系统运行情况,而在系统稳定后可以关闭log输出,从而在能跟踪系统运行情况的同时,又减少了垃圾代码。

3、使用log4j,需要整个系统有一个统一的log机制,这样有利于系统的规划。

使用Log4j的好处:1、决定log信息目的地;2、减少垃圾代码;3、拥有一个统一的log机制

 

如何使用Log4j?(四步轻松看懂)

  • 1.引入jar文件
  • 2.添加配置文件:配置文件名必须是log4j.properties,位置必须放在src下面
  • 3.创建日志对象:引入的是import org.apache.log4j.Logger;
  • 4.调用日志对象中的方法记录日志内容

根据要输出的日志的级别,调用相应的方法
debug —>info ----->warn---->error---->fatal
调试 一般信息 警告 错误 致命错误
管理系统:添加,修改,删除

详解版如何配置使用Log4j

Log4j配置文件(四步轻松拿捏Log4j使用-入门必看!!) - 锦湘 - 博客园 (cnblogs.com)

 

日志的三个分类:

1、SQL日志

分析:日志记录了一个系统的行为,对于了解系统、诊断问题、辅助审计等都有极其重要的作用。通常最近一段时间的日志访问频率是最高的,我们通过聚合日志,分析日志、汇总数据,帮助开发、运维、DBA了解业务的状态和行为。

 

 

1、现有抓包系统是将 MySQL 请求的所有 SQL 语句抓取并分析之后写入到 Clickhouse 中,数据可以用来【分析数据库】的操作。可以查找当前实例、库、**表**有多少 AppCode 在访问、数据库资源是否可以回收、辅助审计等功能。

2、Sniffer 抓包之后将数据写入到 Kafka 中,Clickhouse 直接消费 Kafka 的队列中数据,并将数据 merge 到 Clickhouse 中。由 Server 程序按照天级别定时读取 Clickhouse 中的数据,分析、汇总数据,并解析请求 IP 对应的服务信息等,最后将结果写入到 MySQL 中。

3、当前数据为【日志数据】允许少部分丢失或重复,Kafka 队列中的数据约有 **133w/s**(单个队列最多 **33W**),MySQL 中存储的结果数据规模大约在 4.6T 左右。

名词解释:

  • AppCode:服务的名称,是一个服务的基本属性
  • Clickhouse:一个用于联机分析(OLAP)的列式数据库
  • Kafka:一个高性能的分布式队列服务
  • Zookeeper:一个分布式的开源协调服务
  • 扩展性:在业务量上涨时,服务通过较低的代价就可以满足对业务量上涨的需求
  • 聚合比:将 N 条数据按照同一纬度聚合为 M 条数据,M 一定小于等于 N。 聚合比 = 聚合之后的数据条数/聚合之前的数据条数
  • 能力不足导致数据丢失所(内存溢出)
  • Clickhouse 消费 Kafka 队列中的数据能力不足,延迟较高。并且 Kafka 中的数据只保留 3 个小时,根据测试四个节点 Clickhouse 消费的 Kafka 队列中的数据,约有 80% 的数据丢失,导致数据不完整;

 

2、异常日志

1.快速定位问题

当MySQL遇到异常情况时,异常日志记录可以快速定位问题,如错误的SQL语句、连接超时等。管理员可以通过异常日志记录,找到问题的根源,并及时采取措施解决问题。

2.提高数据库安全性

异常日志记录还可以帮助管理员提高数据库安全性。通过记录异常情况,管理员可以了解数据库的使用情况,及时发现异常情况,如SQL注入、恶意攻击等,从而保护数据库的安全。

 

3、业务日志

业务日志的需求描述与分析:
(客户侧提出需求很简单:要对几个关键的业务功能进行操作日志记录,即什么人在什么时间操作了哪个功能,)操作前的数据报文是什么、操作后的数据报文是什么,必要的时候可以一键回退。

日志在业务系统中是必不可少的一个功能,常见的有系统日志、操作日志等:

 

系统日志

这里的系统日志是指的是程序执行过程中的关键步骤,根据实际场景输出的debug、info、warn、error,fatal等不同级别的程序执行记录信息,这些一般是给程序员或运维看的,一般在出现异常问题的时候,可以通过系统日志中记录的关键参数信息和异常提示,快速排除故障。

package cn.gd.T5;
import org.apache.log4j.Logger;

public class Test {
//注解
@Test
public void test2(){
  //创建日志对象
  Logger logger = Logger.getLogger(Test.class);
  //按照输出级别-输出日志
  logger.debug("debug--调试");
  logger.info("info--信息");
  logger.warn("warn---》警告");
  logger.error("error---》错误");
  logger.fatal("fatal---》严重错误");
  }
}

 

操作日志

操作日志,是用户实际业务操作行为的记录,这些信息一般存储在数据库里,如什么时间哪个用户点了某个菜单、修改了哪个配置等这类业务操作行为,这些日志信息是给普通用户或系统管理员看到。

通过对需求的分析,客户想要是一个业务操作日志管理的功能:

1、记录用户的业务操作行为,记录的字段有:操作人、操作时间、操作功能、日志类型、操作内容描述、操作内容报文、操作前内容报文

2、提供一个可视化的页面,可以查询用户的业务操作行为,对重要操作回溯;

3、提供一定的管理功能,必要的时候可以对用户的误操作回滚;

BEGIN; -- 事务开始
-- 转入-李四给张三转500 update bank set money=money-500 where name='李四'; -- 转出 update bank set money=money+500 where name='张三'; -- 成功提交 COMMIT; -- 失败回滚 ROLLBACK;

日志信息的优先级:

debug(调试) < info(信息) < warn (警告)< error(错误) < fatal(严重错误)

例如:如果日志设置为L,一个级别为P的输出日志只有当P >= L时日志才会输出。

即如果日志级别L设置 info ,只有P的输出级别为 info、warn,后面的日志才会正常输出。

 

总结不易,希望uu们不要吝啬亲爱的?哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正?