首页 > 其他分享 >Spring6日志

Spring6日志

时间:2024-05-22 22:44:07浏览次数:10  
标签:Logging 框架 log4j SLF4J 日志 Spring6 Log4j

  • Jakarta Commons Logging API 是一种 Java 日志记录抽象层,它允许开发者在运行时插入所需的日志框架,如 Log4j、Java Util Logging、SLF4J 等。该 API 提供了一个简单的日志记录接口,使得开发者无需关心底层使用的具体日志框架。
    使用 Jakarta Commons Logging API 的好处包括:
  1. 灵活性:开发者可以轻松更换底层日志框架,而无需修改大量代码。这有助于在项目生命周期中适应不同的日志需求。
  2. 简化日志配置:通过抽象层,开发者可以使用统一的日志记录接口,而无需关心每个日志框架的具体配置细节。
  3. 桥接不同日志框架:由于许多 Java 库和项目使用不同的日志框架,使用 Commons Logging 可以作为这些库之间的桥梁,减少日志框架之间的冲突。

区别

  • SLF4J(Simple Logging Facade for Java)和Jakarta Commons Logging API(也称为Apache Commons Logging或JCL)在Java日志记录领域中都是广泛使用的日志抽象层。它们的主要目标是为开发者提供一个统一的日志记录接口,以便在运行时能够灵活地插入或切换具体的日志实现框架。
  1. SLF4J本身并不提供日志实现,而是通过绑定(binding)机制与具体的日志框架集成。开发者需要在项目中引入相应的SLF4J绑定包(如log4j-slf4j-impl),以便将SLF4J的日志请求转发给具体的日志框架。
    Jakarta Commons Logging API在默认情况下会尝试自动搜索并使用Log4j作为日志实现,如果找不到Log4j,则会回退到使用JDK Logging。这种自动搜索和回退的机制使得Commons Logging在某些情况下能够更方便地集成,但也可能导致一些不可预见的行为。
    参考文档:https://www.bookstack.cn/read/spring-5-framework-doc/2-2-3.md#2.3.2 日志

实现日志

Log4j的1.x版本已经寿终正寝,以下的内容特指Log4j 2

  • 使用JCL和Log4j
<dependencies>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.7</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-jcl</artifactId>
        <version>2.7</version>
    </dependency>
<!--        如果还想使用SLF4J,还需要以下依赖关系:-->
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.7</version>
  </dependency>
</dependencies>
log4j-slf4j-impl是一个桥接包,它的主要作用是连接日志框架SLF4J和日志实现Log4j。在Java项目中,SLF4J通常作为日志框架的规范接口,而Log4j则是具体的日志实现。由于不同的日志实现之间可能存在互不兼容的问题,因此需要一个桥接包来适配它们,使得SLF4J能够正常使用Log4j进行日志记录。当你通过maven引入log4j-slf4j-impl,maven会自动下载依赖的slf4j日志框架.
  • log4j2配置文件
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Logger name="org.springframework.beans.factory" level="DEBUG"/>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

解释:
Root Logger 是 Log4j 2 中的特殊 Logger,它捕获所有未被其他特定 Logger 捕获的日志事件。在这个配置中,Root Logger 的日志级别被设置为 ERROR,这意味着只有 ERROR 级别的日志会被记录。

<Logger name="org.springframework.beans.factory" level="DEBUG"/>
这定义了一个特定的日志记录器(Logger)用于 org.springframework.beans.factory 包及其子包中的类。日志级别设置为 DEBUG,意味着这个包下的所有类产生的 DEBUG 级别及以上的日志(如 INFO, WARN, ERROR)都会被记录。在Spring框架中,org.springframework.beans.factory 是与Bean工厂相关的包,用于处理应用程序上下文的bean定义和创建。因此,将此日志级别设置为 DEBUG 可能会输出大量的日志,主要用于调试Spring的Bean创建和配置过程。(不常用)

标签:Logging,框架,log4j,SLF4J,日志,Spring6,Log4j
From: https://www.cnblogs.com/DuWenjie/p/18205253

相关文章

  • 蓝桥杯-日志统计
    小明维护着一个程序员论坛。现在他收集了一份”点赞”日志,日志共有N行。其中每一行的格式是:tsid表示在ts时刻编号id的帖子收到一个”赞”。现在小明想统计有哪些帖子曾经是”热帖”。如果一个帖子曾在任意一个长度为D的时间段内收到不少于K个赞,小明就认为这个帖......
  • python获取华为云CDN日志
    1.安装模块pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplehuaweicloudsdkcdnpipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simpledatetime2.获取前一天日志文件importosimportrequestsimportshutilimportgzipimportglobimportjs......
  • Serilog日志输出到WPF UI控件
    使用到日志接收器的接口 ILogEventSinkWPF+Prsim+Serilog详细介绍链接 https://github.com/serilog/serilog/wiki/Developing-a-sink   publicinterfaceILogEventSinkWrite:ILogEventSink{LogEventGetLogMessage();}publicclassLogEventSink:I......
  • springboot集成logback-spring.xml日志文件
    logback-spring.xml:<!--Logbackconfiguration.Seehttp://logback.qos.ch/manual/index.html--><configurationscan="true"scanPeriod="10seconds"><springPropertyscope="context"name="logLevel"s......
  • EDP .Net开发框架--自动化日志
    平台下载地址:https://gitee.com/alwaysinsist/edp自动化日志不需要额外调用日志相关功能即可无感实现程序集方法调用的日志记录。创建业务逻辑处理类publicclassStudentBLL:BusinessLogicBase<StudentBLL>继承基类BusinessLogicBase<T>定义业务逻辑方法点击查看代......
  • 一个动态指定logback日志路径的方法
    基于版本:<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.3.14</version></dependency>logback.xml:<?xmlversion="1.0"encoding="UTF-8......
  • 高并发系统-使用自定义日志埋点快速排查问题
    背景在高并发的系统中,通常不会打印除参数校验失败或捕获异常之外的日志,防止对接口的性能产生影响。那对于请求不符合预期的情况,我们如何快速找到是哪块逻辑影响的至关重要。Pfinder提供的链路监控,更多的是性能层面的监控,无法满足我们上述的诉求。下面我将通过自定义通用上下......
  • .NET6中使用Log4net记录日志(二)记录日志到SqlServer数据库
    1、引用NuGet包(System.Data.SqlClient) 2、创建SqlServer数据库表(ProgramLog)CREATETABLEProgramLog(IdINTIDENTITY(1,1)PRIMARYKEY,[Date]DATETIME,--记录时间[Level]NVARCHAR(128),--日志级别[RunTime]VARCHAR(128),--执行时长[Thread]NVARCHAR(256),--线程号[Lin......
  • 日志过滤器
    1.安全相关的关键字认证失败regex复制代码Failed\s+passwordInvalid\s+userauthentication\s+failureFailed\s+publickeyFailed\s+keyboard-interactive/pam用户相关regex复制代码useradd\[userdel\[usermod\[sudo:\s+.+:.*\s+COMMAND=SSH相关regex复制代码sshd:......
  • Windows 日志也可能会被篡改和删除。这可能是因为某些恶意软件试图隐藏其存在或活动,或
    Windows日志也可能会被篡改和删除。这可能是因为某些恶意软件试图隐藏其存在或活动,或者是因为攻击者试图擦除他们的痕迹。为了防止日志的篡改和删除,用户应该采取以下措施:限制对日志的访问权限,以确保只有受信任的用户才能访问和修改日志。定期备份日志,并在必要时将其保......