当前位置: 首页 > news >正文

在Spring Boot中使用不同的日志

前言,本篇就是介绍在Java中使用相关的日志,适合初学者看,如果对这篇不感兴趣的可以移步了,本篇主要围绕我们Java中的几种日志类型,也说不上有多深入,算的上浅入浅出吧,如果你有一段时间的开发经验或者以及学过日志了,其实这篇文章对你并无太大用处。

说到日志,这玩意就很重要了,我们在实际开发中或者我们在做项目的时候,我们一般查找问题往日志查看,包括我们上线的项目,如果项目出现什么问题了,那我们第一件事情,就是下载项目运行日志,然后根据日志来判断程序在哪里出现了问题。目前Java中提供的日志有以下几种类型:

  • JDK Logging: JDK自带的日志框架,也是Java官方推荐的日志框架,可以通过java.util.logging包来使用。
  • Log4j:Apache开源的日志框架,提供了丰富的配置选项和灵活的日志输出方式,可以通过log4j包使用
  • Logback:Log4j的升级版,也是由Apache开源的日志框架,提供了更好的性能和更加丰富的功能,可以通过logback包来使用。
  • SLF4J:Simple Logging Facade for Java,是一个抽象层,可以在不同的日志框架之间进行切换,可以通过slf4j包来使用。

接下来我们将采用这些案例进行demo日志打印:

第一个引入相关依赖:

		<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- Spring Boot Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.32</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>1.7.32</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version><scope>compile</scope></dependency>

配置了相关依赖之后,咱们来配置我们的相关配置文件:

#端口号
server.port=9091
#开启应用调试模式
debug=true
#debug展示包以下的记录的日志级别为debug
logging.level.com.miaow=debug# 而logging.logback.rollingpolicy是Logback日志框架的滚动策略配置
# clean-history-on-start表示是否在应用程序启动时清除历史日志文件,默认为false。
logging.logback.rollingpolicy.clean-history-on-start=false
# file-name-pattern表示日志文件名的格式,默认为%d{yyyy-MM-dd}/%i.log,其中%d{yyyy-MM-dd}表示按照日期划分日志文件,%i表示日志文件的序号。
logging.logback.rollingpolicy.file-name-pattern=
#max-history表示保留的历史日志文件的最大数量,默认为7。
logging.logback.rollingpolicy.max-history=7
# max-file-size表示单个日志文件的最大大小,默认为10MB。
logging.logback.rollingpolicy.max-file-size=10MB
# total-size-cap表示所有日志文件的总大小上限,默认为0B,表示没有上限。
logging.logback.rollingpolicy.total-size-cap=0B

需要注意的是,logging.logback.rollingpolicy是Logback的配置项,如果您使用的是其他日志框架,可能需要使用不同的配置项。

也可以:

logging:level:root: infocom.example: debugfile:name: myapp.logpath: /var/log/myapp/

上面的配置表示将根日志级别设置为info,将com.example包下的日志级别设置为debug,并将日志输出到/var/log/myapp/myapp.log文件中。

咱们创建四个类表示以上的四种日志方式:

import java.util.logging.Logger;/*** @date 2023年11月29日 14:52* @description*/
public class MyClass1 {private static final Logger LOGGER = Logger.getLogger(MyClass1.class.getName());public void myMethod() {LOGGER.info("============>JDK Logging<============");LOGGER.info("This is an info message");LOGGER.warning("This is a warning message");LOGGER.severe("This is a severe message");}
}
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class MyClass3 {private static final Logger LOGGER = LoggerFactory.getLogger(MyClass3.class);public void myMethod() {LOGGER.info("================>Logback<================");LOGGER.info("This is an info message");LOGGER.warn("This is a warning message");LOGGER.error("This is an error message");}
}
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class MyClass4 {private static final Logger LOGGER = LoggerFactory.getLogger(MyClass4.class);public void myMethod() {LOGGER.info("===============>SLF4J<=================");LOGGER.info("This is an info message");LOGGER.warn("This is a warning message");LOGGER.error("This is an error message");}
}
import org.apache.log4j.Logger;
/*** @date 2023年11月29日 14:53* @description*/
public class MyClass5 {private static final Logger LOGGER = Logger.getLogger(MyClass5.class);public void myMethod() {LOGGER.info("==============>Log4j<==================");LOGGER.info("This is an info message");LOGGER.warn("This is a warning message");LOGGER.error("This is an error message");}
}

然后我们在Spring Boot中启动类中配置:

@Slf4j
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);MyClass1 m1 = new MyClass1();MyClass5 m2 = new MyClass5();MyClass3 m3 = new MyClass3();MyClass4 m4 = new MyClass4();m1.myMethod();m2.myMethod();m3.myMethod();m4.myMethod();}
}

如果你到这一步就以为结束了?
你不妨启动一下项目,我们发现MyClass5好像没生效,并且控制台报错了:

log4j:WARN No appenders could be found for logger
(org.apache.ibatis.logging.LogFactory).

log4j:WARN Please initialize the log4j system properly. log4j:WARN See
http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

我们发现问题出在,我们需要在Resources目录下建立一个log4j.properties文件

# Global logging configuration 开发时候建议使用 debug
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

放上如上代码,在启动,ok,我们发现日志如下。

2023-11-29 15:27:02.250  INFO 26848 --- [           main] com.miaow.demo.MyClass1         : ============>JDK Logging<============
2023-11-29 15:27:02.250  INFO 26848 --- [           main] com.miaow.demo.MyClass1         : This is an info message
2023-11-29 15:27:02.250  WARN 26848 --- [           main] com.miaow.demo.MyClass1         : This is a warning message
2023-11-29 15:27:02.250 ERROR 26848 --- [           main] com.miaow.demo.MyClass1         : This is a severe messageINFO [main] - ==============>Log4j<==================INFO [main] - This is an info messageWARN [main] - This is a warning message
ERROR [main] - This is an error message
2023-11-29 15:27:02.250  INFO 26848 --- [           main] com.miaow.demo.MyClass3         : ================>Logback<================
2023-11-29 15:27:02.250  INFO 26848 --- [           main] com.miaow.demo.MyClass3         : This is an info message
2023-11-29 15:27:02.250  WARN 26848 --- [           main] com.miaow.demo.MyClass3         : This is a warning message
2023-11-29 15:27:02.250 ERROR 26848 --- [           main] com.miaow.demo.MyClass3         : This is an error message
2023-11-29 15:27:02.250  INFO 26848 --- [           main] com.miaow.demo.MyClass4         : ===============>SLF4J<=================
2023-11-29 15:27:02.250  INFO 26848 --- [           main] com.miaow.demo.MyClass4         : This is an info message
2023-11-29 15:27:02.250  WARN 26848 --- [           main] com.miaow.demo.MyClass4         : This is a warning message
2023-11-29 15:27:02.251 ERROR 26848 --- [           main] com.miaow.demo.MyClass4         : This is an error message

在Spring Boot中使用日志有以下几个好处:

  • 问题排查和调试:日志是开发和运维过程中非常重要的工具,它可以帮助我们追踪和定位应用程序中的问题。通过记录关键信息和异常堆栈跟踪,我们可以更快地定位和解决问题。

  • 运行时监控:日志可以提供应用程序的运行时监控信息,包括请求处理时间、数据库查询时间、方法执行时间等。这些信息可以帮助我们了解应用程序的性能状况,及时发现潜在的性能问题并进行优化。

  • 安全审计:日志可以记录应用程序的操作和事件,包括用户登录、权限验证、敏感数据访问等。这些日志可以用于安全审计,帮助我们追踪和分析系统的安全事件,及时发现异常行为和潜在的安全威胁。

  • 业务分析和统计通过日志记录关键业务操作和事件,我们可以进行业务分析和统计。例如,统计用户访问量、分析用户行为、跟踪业务流程等,这些信息可以帮助我们了解用户需求和行为,优化产品和服务。

  • 运维管理:日志可以帮助运维人员监控和管理应用程序的运行状态。通过日志,我们可以了解应用程序的运行情况、资源利用情况、错误和异常情况等,及时发现和解决问题,保证应用程序的稳定运行。

总之,使用日志可以提供丰富的运行时信息和统计数据,帮助我们更好地了解和管理应用程序。在开发和运维过程中,合理配置和利用日志可以提高开发效率、问题排查能力和系统稳定性。

http://www.lryc.cn/news/248456.html

相关文章:

  • 运维知识点-openResty
  • 微服务中配置Nacos热更新
  • ABAP2XLSX 的安装和demo
  • 记一篇Centos7安装innodb_ruby
  • VMware虚拟机安装和使用教程(附最新安装包+以ubuntu为例子讲解)
  • c语言 / 指针错误的几种情况
  • Stable-Diffusion——Windows部署教程
  • Day60.算法训练
  • 深入了解Java8新特性-日期时间API之TemporalQuery、TemporalQueries
  • 记录一次现网问题排查(分享查域名是否封禁小程序)
  • linux下实现Qt程序实现开机自启动
  • TCP 基本认识
  • 智慧城市包括哪些内容?有哪些智慧城市物联网方案?
  • Arkts@Watch装饰器与内置组件双向同步深度讲解与实战应用【鸿蒙专栏-14】
  • iMazing是什么软件?2024最新版本如何下载
  • LeetCode(40)同构字符串【哈希表】【简单】
  • 【代码随想录算法训练营-第一天】【数组】704. 二分查找、27. 移除元素
  • [教程] 一文进阶Redis
  • 通用plantuml模板头
  • 网站公安备案流程
  • 关于使用若依,并不会自动分页的解决方式
  • 在PyCharm中配置PyQt5环境
  • SIFI 极值点拟合的详细推导过程
  • Kontakt v7.7.2(音频采样器)
  • Drawer抽屉(antd-design组件库)简单用法
  • Android控件全解手册 - 多语言切换完美解决方案(兼容7.0以上版本)
  • Android-P CameraSerivce
  • 21.Oracle的程序包(Package)
  • Spring 日志
  • webpack如何处理浏览器的样式兼容问题postcss