slf4j+log4j在java中实现日志记录

     2022-03-24     622

关键词:

小Alan今天来跟大家聊聊开发中既简单又常用但必不可少的一样东西,那是什么呢?那就是日志记录,日志输出,日志保存。

后面就统一用日志记录四个字来形容啦。

日志记录是项目的开发中必不可少的一个环节,特别是对于后台服务节点程序来说,有了日志的输出便可以清晰的看到整个程序的运行过程,那么项目成功运行还好,我们就当是清晰的看看程序的运行过程好了,那万一项目要是出Bug了呢?如果这个时候没有上面所说的日志记录,日志输出,日志保存的话,那后果简直不堪设想,为啥?因为就算你的程序抛出了异常却并不意味着程序就一定要停下来等你去解决这个问题,然后它才会执行,大多数后台节点程序都不会因为一些异常而停止它的执行,而是会继续保持执行以便在出现某些问题的时候,不会因为当前出现的一些问题而影响到其它功能的执行,以便继续为用户提供其它正确的服务。那么这个时候就有一定的问题了,程序继续在执行,而又没有通过一些方式保存日志的话,对于jvm输出的信息来说,它是会不断的往下滚动的,而且长度也不是无限的,那么很有可能你会丢失错误信息导致你很难去解决程序中存在的问题,但是有了日志记录那就好办了,在出现问题的时候你随时可以去查看相关的日志,再把日志分类,error的日志专门存放在某个位置的话,那么我想这个时候你还是相对比较愉快一点的。

那么在Java中如何实现日志记录呢?小Alan个人比较喜欢使用slf4j+log4j,也强烈推荐使用这个组合,而不是单纯的用log4j,为啥嘞?因为日志库可不单单只有log4j,比如还有java.util.logging、logback等。那假如咱的项目中已经使用了java.util.logging,而这时候领导说把它换成log4j呢?如果这时你的项目使用的是log4j的Java代码,而不是slf4j的Java代码,那么恭喜你,有可能这java.util.logging和log4j的编码风格是不一样的,那么怎么办?你一个类一个类的去把日志记录的代码找出来,然后一个一个的去改呗,指不定漏了两个,那说不定很精彩。但是如果是slf4j的Java代码实现的日志记录的话,那结果就完全不一样了,轻轻松松搞定你上级的奇葩要求。slf4j跟其它日志库不一样,来看看百度百科的这段说明:

技术分享

slf4j并不是一个日志库实现,而只是日志库实现的门面,它通过外观模式允许你在后台使用任意一个日志类库。管你穿的是啥内裤,反正哥的外观不变,毕竟内裤外穿的人还是少嘛,只换条内裤是不会影响你的外观的!接下来我们来看怎么实现slf4j+log4j,后面再稍微聊聊换内裤的话题。

 

友情提示:这里以maven项目为例,不明白maven的同学,可以在小Alan的博客中看看maven的随笔理解理解maven。

 

第一步:在maven的pom结构中引入相关的jar包:这里包含slf4j、log4j、可别漏了slf4j-log4j

slf4j下载地址:http://www.slf4j.org/download.html

技术分享

 

第二步:在源代码目录下创建log4j.properties文件,maven项目的源代码目录为src/main/java

技术分享

我们来看看log4j.properties文件的内容,大家可以根据注释去理解:

技术分享

%x啥的大家就自己去网上找找其它对应的资料,解释起来又是一大篇幅,这里就省了。

 

最后一步:编写slf4j的Java实现代码

技术分享

这里大家可以自己写个main方法去测试,小Alan就直接在正在开发的项目截个图了,这样也避免大家偷懒,自己动手去试试效果。

slf4j的另一种实现也是可行的那就是使用占位符的方式,代码如下:

技术分享

 

结果示范①

技术分享

结果示范②

技术分享

结果示范③

 技术分享

 

 这样就完美的实现了slf4j+log4j的日志记录,那么我们怎么把log4j替换成其他的日志库呢?很简单,我们打开下载的slf4j文件看看:

技术分享

它下面包含了很多其他日志库的支持jar文件,我们只需要把maven的依赖改成所需要的日志库,再换一个日志库对应的支持jar文件就可以了,换成对应日志库的配置文件,这样你就不至于一个类一个类的去改代码了,因为内裤换了,但是slf4j的外观是不需要任何的改变的。

 

可爱博主:AlanLee

博客地址:http://www.cnblogs.com/AlanLee

本文出自博客园,欢迎大家加入博客园。

 

java#在项目中使用slf4j+logback来记录日志

...eLoggingFacadeforJava。相当于一个门面,提供了Java中所有日志框架的简单抽象。使用SLF4J框架,可以在部署时,迁移到所需的日志记录框架(如Log4j,JUL,Simplelogging,NOP等)SLF4J支持参数化日志记录消 查看详情

为啥使用slf4j而不是log4j来做java日志

在代码中编写日志记录语句使用SLF4J的主要动机是让程序独立于任何特定的日志记录库,这些日志记录库可能需要与现在配置不同的配置,而且还会引入更多令人头疼的维护问题。然而除了这个之外,SLF4JAPI还有一个让您使用SLF4J... 查看详情

java#在项目中使用slf4j+logback来记录日志(代码片段)

...eLoggingFacadeforJava。相当于一个门面,提供了Java中所有日志框架的简单抽象。使用SLF4J框架,可以在部署时,迁移到所需的日志记录框架(如Log4j,JUL,Simplelogging,NOP等)SLF4J支持参数化日志记录消息SLF4J... 查看详情

java日志框架--log4j2(入门案例slf4j+log4j2log4j2异步日志无垃圾记录)(代码片段)

1.log4j2ApacheLog4j2是对Log4j的升级版,参考了logback的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升,主要有:异常处理,在logback中,Appender中的异常不会被应用感知到,但是在log... 查看详情

java日志框架--log4j2(入门案例slf4j+log4j2log4j2异步日志无垃圾记录)(代码片段)

1.log4j2ApacheLog4j2是对Log4j的升级版,参考了logback的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升,主要有:异常处理,在logback中,Appender中的异常不会被应用感知到,但是在log... 查看详情

slf4j-一个允许你统一日志记录api的抽象层

一、什么是SLF4J我们在做Java开发时,如果需要记录日志,有很多日志API可供选择,如:java.util.loggingApachelog4jlogbackSLF4J又是个什么东东呢?为什么使用SLF4J比使用log4j或者java.util.logging更好呢?这是因为与所有提到的这些日志记录... 查看详情

logback,slf4j,log4j2。了解它们并学习如何使用。(翻译)(代码片段)

...库记录到磁盘或其他某种介质上的文件中来写这些语句。日志记录是任何项目的关键方面,因此已经编写了各种框架。一些Java日志记录框架包括Log4j,logback,Apache通用日志记录,java.util.Logger等。所有这些日志记录器都将日志记... 查看详情

log4j使用总结

  以下纯属个人在使用Java的Log4j时的总结。1、日志记录优先选择org.slf4j.Logger    如果项目中引入的logger包中有slf4j和log4j,在没有其他选择的时候优先使用org.slf4j.Logger。 2、习惯使用Log4j进行日志记录    代码中... 查看详情

如何将 java.util.logging 发送到 log4j?

...描述】:我有一个现有的应用程序,它针对log4j执行所有日志记录。我们使用了许多其他库,这些库要么也使用log4j,要么针对CommonsLogging进行记录,最终在我们的环境中使用log4j。我们的依赖项之一甚至针对slf4j进行日志记录 查看详情

java日志框架slf4j和log4j以及logback的联系和区别

1.SLF4J(SimpleloggingFacadeforJava)意思为简单日志门面,它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照其提供的接口方法进行调用即可,由于它只是一个接口,并不是一个具体的... 查看详情

springboot之日志记录

SpringBoot之日志记录SpringBoot支持集成Java世界主流的日志库。如果对于Java日志库不熟悉,可以参考:细说Java主流日志工具库关键词:log4j,log4j2,logback,slf4j日志格式控制台输出彩色打印文件输出日志级别日志组日志配置文件SpringBoot... 查看详情

java项目中如何使用log4j和slf4j实现日志打印

...og4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIXSyslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日... 查看详情

log4j+slf4j管理日志项目迁移logback+slf4j

...生,最近被安排了一个任务,原有的项目中使用的是log4j日志管理要转换成logbacak的日志管理。介于之前并未深究log4j和logback日志,所以做起来也很是头疼,不得不查询资料问别人,才勉强完成,所以记录一下从头的步骤,以供... 查看详情

日志技术-java原生日志实现jul

目录:一、日志的概念二、Java日志框架三、JUL日志框架四、JUL日志框架代码实现1、默认配置日志输出2、直接对应日志级别输出3、自定义编码形式日志输出4、Logger对象的父子关系5、加载自定义配置文件五、JUL日志配置文件1、JD... 查看详情

java日志框架--log4j2(入门案例slf4j+log4j2log4j2异步日志无垃圾记录)(代码片段)

...数配置,最实用的就是我们在生产上可以动态的修改日志的级别而不需要重启应用。无垃圾机制,log4j2在大部分情况下,都可以使用其设计的一套无垃圾机制,避免频繁的日志收集导致的jvmgc。官网:https://logg... 查看详情

日志及log4j框架(代码片段)

日志分类  SQL日志、异常日志、业务日志日志实现1、jdk也提供日志记录功能  没有日志级别;  如果想写出到文件,需要自己使用IO流来实现2、log4j是一个非常优秀的开源日志记录工具  a、控制日志的输出级别  b、... 查看详情

java学习笔记-日志体系slf4j+log4j2(代码片段)

Java学习笔记-日志体系SLF4JLog4j2添加适配器依赖web.xml配置log4j2.xml参考资料SLF4JSimpleLoggingFacadeforJava(SLF4J)充当各种日志框架(例如java.util.logging、logback、log4j)的简单外观或抽象(外观模式),允许最终用户在部... 查看详情

slf4j+log4j2模式的日志搭建

...大家介绍一下我们我们在项目中必须得有的一个部分——日志!是的,就是那些让我们看着头疼的东西~~~好的日志可以帮助团队成员快速发现并解决问题,用好了可以大幅度提高代码缺陷修复效率!言归正传,今天先来讲讲如何... 查看详情