您的位置:首页 > 娱乐 > 明星 > 赣州新闻联播直播_软件开发可以自学吗_湛江今日头条新闻_软文营销怎么写

赣州新闻联播直播_软件开发可以自学吗_湛江今日头条新闻_软文营销怎么写

2025/1/11 18:20:10 来源:https://blog.csdn.net/LXMXHJ/article/details/145053021  浏览:    关键词:赣州新闻联播直播_软件开发可以自学吗_湛江今日头条新闻_软文营销怎么写
赣州新闻联播直播_软件开发可以自学吗_湛江今日头条新闻_软文营销怎么写

文章目录

  • SLF4J
    • 基础概念
    • 使用
    • 输出形式
    • 日志绑定
    • 桥接旧的框架
    • 实战
  • logback
    • 基础概念
    • 配置文件
  • Log4j
    • 概述

SLF4J

参考:
https://www.cnblogs.com/shenStudy/p/15806951.html
https://slf4j.org/

基础概念

是什么?SLF4JSimple Logging Facade for Java),是一个为Java日志系统提供标准化接口的框架。它的主要目的是为各种日志框架提供统一的API,从而简化日志记录的实现和管理。使用该日志框架,需要用到 logback.xml  或者 logback-spring.xml 。其具体的实现是由log4j或者logback等实现。
日志门面?SLF4J,为日志系统提供一套门面,通过面向接口规范来进行开发,避免了直接依赖具体的日志框架,可轻松切换不同的日志实现框架并且不需要改动代码。

使用

实现方式:单一存在的日志框架,例如JULLog4jLogbackLog4j2(其本身也提供日志门面接口);现阶段主流使用slf4j+logback;未来趋势使用slf4j+log4j2;
日志架构:采用slf4j作为门面,log4j或者logback作为实现框架,中间使用桥接器完成桥接。
日志的输出级别:error、warn、info(默认级别)、debug、trace,从左到右级别依次降低;其中error、warn、info信息会在控制台输出,其余信息不会输出。

输出形式

带有占位符的日志输出:Logger.info("用户:{},{}",name,age);
输出系统异常:try {int i = 1 / 0;} catch (Exception e) {logger.error("出现异常:",e);}

日志绑定

日志绑定图解
各种框架的日志输出信息:

🍇 logback-classic框架:
11:12:32.471 [main] ERROR com.date1.slf4jjTest - error
11:12:32.487 [main] WARN com.date1.slf4jjTest - warn
11:12:32.487 [main] INFO com.date1.slf4jjTest - info
11:12:32.487 [main] DEBUG com.date1.slf4jjTest - debug
11:12:32.487 [main] INFO com.date1.slf4jjTest - 用户:xxx,26🍇 log4j框架:
引入依赖:slf4j-log4j12 (适配器) 以及 log4j
日志信息展示:
2024-01-22 14:11:51,695 - 0    ERROR [main] com.date1.slf4jjTest:21  - error
2024-01-22 14:11:51,695 - 0    WARN  [main] com.date1.slf4jjTest:22  - warn
2024-01-22 14:11:51,695 - 0    INFO  [main] com.date1.slf4jjTest:23  - info
2024-01-22 14:11:51,695 - 0    INFO  [main] com.date1.slf4jjTest:29  - 用户:xxx,26运行测试方法,报错:log4j:WARN No appenders could be found for logger (com.date1.slf4jjTest).log4j:WARN Please initialize the log4j system properly.未进行log4j.proterties文件的配置;参考修改博客:https://www.cnblogs.com/Durant0420/p/14979620.html文件配置:具体配置文件内容 复制https://www.cnblogs.com/Durant0420/p/14979620.html 博客内容;🍇 slf4j-simple框架:
[main] ERROR com.date1.slf4jjTest - error
[main] WARN com.date1.slf4jjTest - warn
[main] INFO com.date1.slf4jjTest - info
[main] INFO com.date1.slf4jjTest - 用户:xxx,26🍇 slf4j-nop框架,关闭日志功能;
进程已结束,退出代码为 0
控制台无任何输出。🍇 jul日志实现:
使用该实现需要引入适配器slf4j-jdbc,且jul已经被内置;
日志信息展示:
一月 22, 2024 2:31:05 下午 com.date1.slf4jjTest function1
严重: error
一月 22, 2024 2:31:05 下午 com.date1.slf4jjTest function1
警告: warn
一月 22, 2024 2:31:05 下午 com.date1.slf4jjTest function1
信息: info
一月 22, 2024 2:31:05 下午 com.date1.slf4jjTest function1
信息: 用户:xxx,26🍎 特点:绑定多个日志框架时,会默认使用依赖文件中第一个框架;

日志实现框架的绑定流程:

1.添加slf4j-api的依赖
2.使用slf4j的API在项目中进行统一的日志记录
3.绑定具体的日志实现框架绑定已经实现了slf4i的日志框架直接添加对应依赖绑定没有实现slf4i的日志框架先添加日志的适配器再添加实现类的依赖
4.slf4i有且仅有一个日志实现框架的绑定 (如果出现多个默认使用第一个依赖日志实现)

桥接旧的框架

是什么?项目设计之初使用简单的日志框架log4j,在后期程序实现过程中需要logback,桥接器可以实现不修改原先log4j而达到升级的目的。
实现?原始的log4j 升级为 logback需要配置log4j的桥接器,即在pom文件中:log4j-over-slf4j<!--        log4j 升级为 logback 配置桥接器--><dependency><groupId>org.slf4j</groupId><artifactId>log4j-over-slf4j</artifactId><version>1.7.25</version></dependency>

🍎 注意:
桥接器与适配器不能同时出现,即log4j-over-slf4j 与slf4j-log4j12 ,如果同时出现,会出现栈内存溢出的错误,会陷入死循环。
在这里插入图片描述

实战

logback

基础概念

是什么?

Logback是一个广泛用于Java应用的日志记录库。

Logback主要分为三个模块:

logback-core:其它两个模块的基础模块
logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API
logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能

日志级别有:error、warn、info、trace、debug(默认级别);
修改日志的默认信息需要通过配置文件;

组件之间的关系:

1. Logger:日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型、级别。
2. Appender:用于指定日志输出的目的地,目的地可以是控制台、文件、数据库等等。
3. Layout:负责把事件转换成字符串,格式化的日志信息的输出。在logback中Lavout对象被封装在encoder中

配置文件

参见的配置文件:

logback会依次读取以下类型配置文件
logback.groovy
logback-test.xml
logback.xml如果均不存在会采用默认配置

控制台输出的appender配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!--配置集中管理属性我们可以直接改属性的 value 值格式: ${name} --><property name=" pattern " value="[%-5level]  %d{yyyy-MM-dd HH;mm;ssSSS} %c %M %L [%thread] %m%n " > </property><!--日志输出格式%-5level%dlyyyy-MM-dd HH;mm;ssSSS}日期%c类的完整名称%M为method%L为行号%thread线程名称%m或者%msg为信息%n换行--><!--控制台日志输出的 appender--><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><!--控制输出流对象 默认 System.out 改为 System.err--><target>System.err</target><!--日志消息格式配置--><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${pattern}</pattern></encoder></appender><!--root logger 配置--><root level="ALL"><appender-ref ref="console"></appender-ref></root></configuration>

日志文件输出的appender配置文件:

<appender name="check_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 定义一个名为check_log的日志输出目的地,类型是滚动日志记录器--><encoder><pattern>%msg%n</pattern><charset>UTF-8</charset></encoder><!-- encoder记录日志消息的格式,其中pattern消息格式,%msg%n=只记录消息体,charset字符集 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 使用基于时间的滚动策略,通过class配置--><fileNamePattern>${LOG_HOME}/check_log/%d{yyyy-MM-dd,aux}/check_log.%d{yyyy-MM-dd.HH}.log</fileNamePattern><!-- 文件路径,--></rollingPolicy>
</appender><appender name="check_log_async" class="ch.qos.logback.classic.AsyncAppender">
<!-- 定义异步日志文件器,通过class设置,该可以提高日志写入的性能,不会阻塞主线程--><discardingThreshold>0</discardingThreshold><!-- 队列满时,超出的事件被丢弃的阈值,0=意味着不丢弃任何事件 --><queueSize>512</queueSize><!-- 异步记录器使用的队列大小,512=队列大小 -->
</appender><logger name="com.unicom.associatedAuth.log.CheckLog" level="INFO" additivity="false">
<!-- 配置日志记录器,name=名称,及对应的类路径;level=日志级别,等于或高于info的会被处理; additivity=false表示日志记录器不会集成父日志记录器的输出目的地,仅输出到自己指定的appender  --><appender-ref ref="check_log_async"/><!-- 日志记录器指定的appender-->
</logger> 

Log4j

概述

Log4j 是一种基于 Java 的日志记录框架,它提供了强大的日志记录功能,包括日志级别、日志输出格式、日志滚动等。

  • 使用:
    采用maven形式,需要导入相应的依赖包;
    配置在 properties 或 XML 文件进行。

案例:

# 输出到控制台
log4j.rootLogger=DEBUG, stdout
// 定义了一个根记录器(rootLogger),将其日志级别设置为 DEBUG,并将日志输出到控制台。
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
//  定义名stdout 的输出器(appender) 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
//  其输出格式设置为 PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
// 输出格式的字符串(ConversionPattern)

版权声明:

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

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