Java实际项目开发中Log4j日志记录中的logger使用方式

本文介绍了Log4j作为Apache开源项目的背景及其三大组件——Logger、Appenders和Layout。详细阐述了使用logger的步骤,并讲解了不同日志级别如error、warn、info、debug和trace的适用场景,重点讨论了在实际开发中info和debug级别的应用。
ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

在这里插入图片描述

Log4j背景介绍

Log4j是Apache的一个开源项目,使用Log4j,控制日志信息每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。

Log4j的三大组件

Log4j的三个组件 : 日志记录器(Logger),输出端(Appenders),日志格式化(Layout)

  1. Logger : 控制启动/禁用哪些日志记录语句,也可以对日志信息进行级别限制
  2. Appenders : 指定日志将打印到控制台还是文件
  3. Layout : 控制日志信息的显示格式

Log4j使用logger的步骤

Log4j使用logger的三个步骤如下 :
1.引入logger类和logger工厂类
2.声明logger
3.记录日志

//步骤1: 引入slf4j接口的logger和LoggerFactory
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DemoService{
//步骤2: 声明一个Logger实现类,以static的方式
//Logger对象是否声明为静止业界有一些争议
//1. static的优势在于	static Logger 更符合语义,节省CPU,但是不支持注入
//2. 不使用static的优势在于  支持注入,对于JVM中运行的多个引用同一个类库应用程序,可以在不同的程序对同个类Logger进行不同的配置
	private final static Logger logger=LoggerFactory.getLogger(DemoService.class);
	public boolean verfiyDemoInfo(String userName,String password){ 
	//步骤3:log it   输出log信息
		logger.info("试试看输出什么信息 [{}]”,userName);
		return false;
	}
}

具体如何实现方式

在这里插入图片描述
见识一下日志文件
在这里插入图片描述
再访问一次
在这里插入图片描述
但是Log4j的logger不止info这个级别
Log4j有五个级别
track
debug
info
warn
error

用户级别 : error warn info 这三个级别属于生产环境,是运维人员需要看得懂的
开发级别 : debug

error

影响程序运行,当前请求正常运行的异常情况

  1. 打开配置文件失败
  2. 第三方网络连接异常
  3. sqlException等不应该出现的情况
  4. 某个serviceimpl的方法返回的list集合应该有元素却获取到一个空集合list
    字符转换的时候报错显示无GBK字符集

warn

不应该出现但是不影响程序,当前请求正常运行的异常情况,例如:

  1. 有容错机制的时候出现错误情况
  2. 找不到配置文件,但是系统能自动创建配置文件
  3. 即将接近临界值的时候,例如:
    缓存池占用达到警告线

info

  1. 系统运行信息
  2. serviceimpl方法的出入口
  3. 主要逻辑分步骤
  4. 外部接口部分
  5. 客户端请求参数和返回给客户端的结果
  6. 调用第三方的调用参数和调用结果

debug

  1. 用于记录程序变量
  2. 多次迭代中的变量
  3. 方法/运算结果
  4. 替代代码中的注释

trace

  1. 主要用于系统运行中的完整信息,完整的http request和http response

总结

在实际开发中我们经常用到的是info和debug
我具体描述一下info级别的用法

void info(java.lang.String s);
输出
[main] INFO  c.j.training.logging.service.UserService - 开始初始化配置文件读取模块
void info(java.lang.String s, java.lang.Object o);
输出
 [main] INFO  c.j.training.logging.service.UserService - 开始导入配置文件[/somePath/config.properties]
void info(java.lang.String s, java.lang.Object o, java.lang.Object o1);
输出
[main] INFO  c.j.training.logging.service.UserService - 开始从配置文件[/somePath/config.properties]中读取配置项[maxSize]的值
void info(java.lang.String s, java.lang.Object... objects);
输出
[main] INFO  c.j.training.logging.service.UserService - 在配置文件[/somePath/config.properties]中读取到配置项[maxSize]的值为[5]

v

oid info(java.lang.String s, java.lang.Throwable throwable);
输出
 [main] INFO  c.j.training.logging.service.UserService - 读取配置文件时出现异常
java.io.FileNotFoundException: File not exists
  at cn.justfly.training.logging.service.UserServiceTest.testLogResult(UserServiceTest.java:31) ~[test-classes/:na]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_45]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_45]
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_45]
  at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_45]

输出时可以得到总结,logger信息的{}会被后面的参数按照顺序替换,带来的好处是运行时不需要打印盖log,不会产生重复的String对象

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值