日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在使用log4j的时候,难免会遇到各种问题;下面介绍一下,使用log4j不打印日志情况的排查。

首先,在使用log4j的时候,必须的jar包。

  • commons-logging-1.2.jar
  • log4j-1.2.17.jar
  • slf4j-log4j12-1.7.21.jar
  • slf4j-api-1.6.4.jar

如果发现没有日志的打印,首先看一下是否缺少jar包。

举例:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

由于缺少jar包导致的

<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.21</version>
</dependency>

下面介绍一下 slf4j-api、slf4j-log4j12以及log4j之间什么关系?

几乎在每个jar包里都可以看到log4j的身影,在多个子工程构成项目中,slf4j相关的冲突时不时就跳出来让你不爽,那么slf4j-api、slf4j-log4j12还有log4j他们是什么关系?我把自己了解的和大家简单分享一下:

slf4j: Simple Logging Facade for Java,为java提供的简单日志Facade。Facade:门面,更底层一点说就是接口。他允许用户以自己的喜好,在工程中通过slf4j接入不同的日志系统。更直观一点,slf4j是个数据线,一端嵌入程序,另一端链接日志系统,从而实现将程序中的信息导入到日志系统并记录。
因此,slf4j入口就是众多接口的集合,他不负责具体的日志实现,只在编译时负责寻找合适的日志系统进行绑定。具体有哪些接口,全部都定义在slf4j-api中。查看slf4j-api源码就可以发现,里面除了public final class LoggerFactory类之外,都是接口定义。因此,slf4j-api本质就是一个接口定义。

下图比较清晰的描述了他们之间的关系:

slf4j-log4j12:链接slf4j-api和log4j中间的适配器。它实现了slf4j-api中StaticLoggerBinder接口,从而使得在编译时绑定的是slf4j-log4j12的getSingleton()方法
log4j:这个是具体的日志系统。通过slf4j-log4j12初始化Log4j,达到最终日志的输出。

log4j不打日志问题之解决方案(一)相关推荐

  1. log4j不打日志问题之实战解决方案(二)

    最近在tomcat 容器下启动项目的时候,接二连三的发现有些项目间歇性的不会打印日志,由于负责多个项目,多数项目会打印日志,所以没注意这个问题.就在昨天有一个项目部署上线的时候,在生产环境下,tomc ...

  2. slf4j+log4j打印日志,控制台无日志输出

    slf4j+log4j 实现日志打印 项目场景: 今天看以前的项目,运行起来报错,项目日志对于项目是很重要的,但是控制台没有打印出来日志,运行起来报错的问题先放一放,先把日志的问题解决了,我项目中有l ...

  3. SpringMVC学习(三)——SpringMVC+Slf4j+Log4j+Logback日志集成实战分享

    文章目录 1.概述 1.1 说明 1.2 日志体系 1.2.1 JCL日志面门介绍 1.2.2 Slf4j日志面门介绍 2.几种日志系统介绍: 2.1 Slf4j 2.2 Commons-loggin ...

  4. java log输出到文件路径_Java - 配置log4j的日志文件路径 (附-获取当前类路径的多种方法)...

    1 日志路径带来的痛点 Java 项目中少不了要和log4j等日志框架打交道, 开发环境和生产环境下日志文件的输出路径总是不一致, 设置为绝对路径的方式缺少了灵活性, 每次变更项目路径都要修改文件, ...

  5. log4j 压缩日志_Spring Boot 日志各种使用姿势,是时候捋清楚了!

    来自公众号:江南一点雨 1. Java 日志概览 1.1 总体概览 1.2 日志级别 1.3 综合对比 1.4 最佳实践 2. Spring Boot 日志实现 2.1 Spring Boot 日志配 ...

  6. 使用Log4j进行日志操作(牛小浩)不错的

    使用Log4j进行日志操作   一.Log4j简介   (1)概述 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是 ...

  7. java jar log4j_java项目打包成可执行jar用log4j将日志写在jar所在目录操作

    开发一个demo时想将日志输出到最终打包的jar所在目录,从网上学习实验整理之后的配置如下, log4j.properties log4j.rootLogger = INFO,console,logF ...

  8. SpringBoot中使用log4j进行日志管理

    场景 SpringBoot项目中使用log4j进行日志管理. 实现 1.因为SpringBoot默认是使用logback,所以要修改pom.xml 过滤掉自带的spring-boot-starter- ...

  9. log4j添加日志一定记住在工程的web.xml文件下加一些内容

    log4j添加日志一定记住在工程的web.xml文件下加如下内容: 转载于:https://www.cnblogs.com/oymx/p/3965878.html

最新文章

  1. Shiny平台构建与R包开发(五)——ui美化
  2. 在Linux上安装其他版本的cmake 或 升级cmake
  3. MAUI 跨平台播客应用程序(Conf 2021)
  4. Postgresql使用coalesce实现类似oracle的NVL方法
  5. 程序员 30 岁前,该如何规划自己的职业发展?
  6. 机器学习7/100天-K近邻算法
  7. 我的linux redhat6.0之路-1.2
  8. html中img显示旋转,css如何实现图片的旋转展示效果(代码示例)
  9. 2020软考架构设计师真题
  10. javaweb项目遇到错误
  11. 526个儿童游戏APP应用音效游戏声音集合音效素材 Kids Game Sound Effects
  12. C#使用AForge连接摄像头并且拍照
  13. 公众号滑动图代码_微信公众号的代码块插入,及一键排版
  14. Word大括号多行公式左对齐
  15. 一位Google程序员的算法学习之路
  16. 对垃圾分类工作作出重要指示PPT模板
  17. HTML + CSS实现动态背景的登录效果
  18. 【目录】全志V3S学习记录
  19. [CodeForces877 E. Danil and a Part-time Job]dfs序+线段树
  20. 2023年PMP考试---备考教材清单!

热门文章

  1. 数实融合激变时刻,与长期主义同行
  2. windows防火墙开端口失败
  3. easyexcel官方地址
  4. 怎么查看电脑的电池损耗情况?
  5. 微信小程序文本超出自动换行解决方案
  6. 团组织关系的转接流程
  7. 2018年ACM-ICPC亚洲区域赛(焦作)赛后总结
  8. 西西里的美丽传说:美的绽放、挣扎与凋零
  9. 全球与中国胶原蛋白敷料市场深度研究分析报告
  10. chrome浏览器怎么模拟手机访问网页(已測OK)