当前位置: 首页> 财经> 金融 > 怎样制作自己的小程序_内蒙古呼和浩特天气预报_站长之家权重查询_企业网站建设的一般要素

怎样制作自己的小程序_内蒙古呼和浩特天气预报_站长之家权重查询_企业网站建设的一般要素

时间:2025/7/12 5:30:50来源:https://blog.csdn.net/2302_76435884/article/details/146392216 浏览次数:0次
怎样制作自己的小程序_内蒙古呼和浩特天气预报_站长之家权重查询_企业网站建设的一般要素

目录

一、日志的用途

二、日志的使用

1.打印日志

2.在程序中得到日志对象

3.使用日志对象打印日志

4.日志格式说明

5.日志框架的了解

门面模式(外观模式)

6.日志级别

7.日志配置

配置日志级别

 日志持久化

 配置日志文件分割

 配置日志格式

 三、更简单的日志输出

1.添加lombok依赖

2.添加@Slf4j注解


一、日志的用途

1.在项目中用于定位问题和发现问题

2.系统监控:

我们可以通过日志记录这个系统的运行状态,比如每一个方法的响应时间,响应状态,对数据进行分析,设置不同的规则等等。

3.数据采集:

数据采集是一个比较大的范围,采集的数据可以作用在很多方面,比如数据统计,推荐排序等。

4.日志审计:

通过设置系统日志分析,可以判断一些非法攻击,非法调用,以及系统处理过程中的安全 隐患。


二、日志的使用

1.打印日志

打印日志的步骤:

  • 在程序中得到日志对象
  • 使用日志对象输出要打印的内容

2.在程序中得到日志对象

获取日志对象需要使用日志工厂LoggerFactory,如下代码所示:

private static Logger logger =  LoggerFactory.getLogger(BookController.class);

其中LoggerFactory.getLogger需要传递一个参数,标识这个日志对象的名称,这样可以更清晰的知道哪个类输出的日志,当遇到问题是就可以定位到时那个类出了问题了。

注意:Logger对象是属于org.slf4j包下的,不要导错包了。

 3.使用日志对象打印日志

日志对象的打印方法有很多种,这里使用的是info()方法来进行打印:

  private static Logger logger =  LoggerFactory.getLogger(BookController.class);@RequestMapping("/logger")public String logger(){logger.info("====================日志打印输出===================");return "打印日志";}

可以看到这是BookController类打印的日志。

4.日志格式说明

 从上图可以看到,日志输出的内容元素具体如下:

  1. 时间日期:精确到秒
  2. 日志级别:ERROR,WARN,INFO,DEBUG或TRACE
  3. 进程ID
  4. 线程名
  5. Logger名(通常使用源代码的类名)
  6. 日志内容

5.日志框架的了解

日志框架主要是由日志门面日志实现构成的。

 SLF4J不同于其他日志框架,它不是一个真正的日志实现,而是一个抽象层,对日志框架制定的一种规范,标准,接口。所有SLF4J并不能独立使用,需要和具体的日志框架配置使用。

门面模式(外观模式)

SLF4J是门面模式的典型应用(但不仅仅使用了门面模式)。

门面模式定义

门面模式(Facade Pattern)又称为外观模式,提供了一个统一的接口,用来访问子系统中的一群接口。其主要特征定义了一个高层接口,让子系统更容易使用。

门面模式包含了两个角色:

外观角色:也称门面角色,系统对外的统一接口。

子系统角色:可以同时有一个或多个子系统,每个子系统都不是一个单独的类,而是一个类的集合。

比如:家里有很多灯,每次回家都要一盏一盏的开,但是有了总开关,只要打开总开关,就可以一次性全部打开了。

门面模式优点

  1. 减少了系统的相互依赖,实现了客户端与子系统的解耦关系;
  2. 提高了灵活性,简化了客户端对子系统的使用难度(如SLF4J封装了Logback、Log4j2等实现,开发者只需调用Logger.info(),无需关心底层如何输出日志);
  3. 提高了安全性,可以灵活设定访问权限。

6.日志级别

日志级别代表着日志信息对应问题的严重性,同时是为了更快的筛选符合目标的日志信息。

日志级别分为下面几类:

  • FATAL:致命信息,表示需要立即被处理的系统级错误。
  • ERROR:错误信息,级别较高的错误日志信息,但仍然不影响系统的继续运行。
  • WARN:警告信息,不影响使用,但需要注意的问题。
  • INFO:普通信息,用于记录应用程序正常运行时的一些信息,例如系统启动完成、请求处理完成。
  • DEBUG:调试信息,需要调试时关键信息的打印。
  • TRACE:追踪信息,比DEBUG更细粒度的信息事件。

日志级别的顺序:

 日志级别与日志配置有关,而Spring日志的默认输出级别是info级别的,普通日志输出时,只会打印级别大于或等于此级别的日志

7.日志配置

配置日志级别

日志级别只需要在配置文件中设置“logging.level”配置项即可。

properties配置

logging.level.root=debug

yml配置

logging:level:root: debug

重新运行代码后,查看结果:

 日志持久化

有时候我们需要报日志保存下来,以便出现问题之后追溯问题,把日志保存下来就叫做持久化

使用日志持久化的方式有两种:

  1. 配置日志文件名
  2. 配置日志的存储目录

 配置日志文件的路径和文件名:

properties配置

  • 文件名保存
logging.file.name=logger/springboot.log
  •  路径保存
 logging.file.path=D:/temp

yml配置

  • 文件名保存
 设置⽇志⽂件的⽂件名
logging:file:name: logger/springboot.log
  • 路径保存
# 设置⽇志⽂件的⽬录
logging:file:path: D:/temp

配置完后,运行程序,日志的内容被我们保存在了对应的目录下:

  • 本项目目录下:

  •  其他目录下:

 配置日志文件分割

如果我们的日志都放在一个文件中,随着项目的运行,日志文件会越来越大,需要对日志文件进行分割。

所以我们可以通过配置日志文件的大小来进行分割。

配置项说明默认值
logging.logback.rollingpolicy.file-name-pattern日志分割后的文件名格式${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
logging.logback.rollingpolicy.max-file-size当日志文件超过这个大小就会自动分割10MB

配置日志文件分割:

properties配置

logging.logback.rollingpolicy.file-name-pattern=${LOG_FILE}.%d{yyyy-MM-dd}.%i
logging.logback.rollingpolicy.max-file-size=1KB

yml配置

logging:logback:rollingpolicy:max-file-size: 1KBfile-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i

项目运行后,查看结果:

 配置日志格式

目前日志打印的格式是默认的

 打印日志的格式,也是支持配置的,支持控制台和日志文件分别设置

配置项说明默认值
logging.pattern.console控制台日志格式%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd'T'HH:mm:ss.SSSXXX}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
logging.pattern.file日志文件的日志格式%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MMdd'T'HH:mm:ss.SSSXXX}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- }
--- [%t] %-40.40logger{39} :
%m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}

配置项说明:

1.%clr(表达式)(颜色)设置输入日志的颜色

支持颜色有以下几种:

  • blue
  • cyan
  • faint
  • green
  • magenta
  • red
  • yellow

2.%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd'T'HH:mm:ss.SSSXXX}} ⽇期和时间--精确到毫秒

3.%5p显式日志级别

4.%t线程名,%c类的全限定名。%M method,%L 为行号,%thread线程名称,%m或者%msg显示输出消息。%n换行符。

、更多说明, 参考: https://logback.qos.ch/manual/layouts.html#conversionWord

例子:

properties配置

logging.pattern.console='%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'

yml配置

logging:pattern:console: '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'file: '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'

项⽬运⾏, 观察⽇志变化:


 三、更简单的日志输出

每次从日志工厂里获取日志对象(LoggerFactory.getLogger(xxx.class)很繁琐,且每一个类都要添加以便,所以lombok给我们提供了更简单的方式。

  1. 添加lombok框架支持
  2. 使用@Slf4j注释输出日志

1.添加lombok依赖

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency>

2.添加@Slf4j注解

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
public class LogController {public void log(){log.info("--------------要输出⽇志的内容----------------");}
}

lombok提供的 @Slf4j 会帮我们提供一个日志对象log,我们可以直接使用就可以了。

关键字:怎样制作自己的小程序_内蒙古呼和浩特天气预报_站长之家权重查询_企业网站建设的一般要素

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: