原创 怎样在自己的 Web 中加入强大的日志系统?slf4j 的日志插件必须要知道!

发布时间:2021-06-24 19:58:24 浏览 30 来源:猿笔记 作者:老王说编程

    从而监控软件系统、或是根据日志信息解决一些重要的问题,但是在Java应用程序中又有着众多的日志框架或是工具组件,用户可以根据自己的需求选择日志系统比如log4j,slf4j相当于是对不同的日志系统提供的接口,那么我们必须要对这些单独的日志系统进行配置、并且各个日志系统维护起来也是相当的麻烦,经过slf4j的接口封装以后的日志系统调用也变得更加的简洁、并且使打印日志的方法也变得更加的高效,特别是提供的模板方法进行日志打印。简单来讲就是将每个微服务模块的日志、接口调用信息都发送到另外一台服务器上使用Web日志系统进行查看。


    #主题列表:juejin,github,smartblue,cyanosis,channing-cyan,fancy,hydrogen,condensed-night-purple,greenwillow,v-green,vue-pro,healer-readable,mk-cute,jzman,geek-black,awesome-green,qklhk-chocolate

    #投稿主题:

    theme:juejin

    highlight:

    对于程,一个应用程序的日志管理是极其重要的。因为它可以帮助我们随时检查应用程序的运行状态和执行效果,从而监控软件系统或根据日志信息解决一些重要问题。

    但是Java应用中有很多日志框架或者工具组件,比如Java Jdk本身提供的日志,Apache提供的log4j,logback等日志框架。今天提到的slf4j并不是特定的日志解决方案,它的存在只是为了服务于各种日志系统,用户可以根据自己的需要选择log4j等日志系统。Slf4j相当于为不同的日志系统提供接口,独立于我们经常使用的日志系统,比如logback,log4j等等。试想一下,如果开发过程中有几个日志类库,那么就必须配置这些单独的日志系统,而且每个日志系统的维护都相当麻烦。

    slf4j的接口封装后,日志系统调用变得更加简洁,打印日志的方法变得更加高效。特别是,为日志打印提供的模板方法减少了不断创建字符串的消耗。在生产环境中,日志对系统性能的影响通常非常重要,必须加以注意。目前,通用的微服务架构采用ELK的架构模式。简单来说,就是将每个微服务模块的日志和接口调用信息发送到另一台服务器,使用Web日志系统进行查看。如果您需要了解ELK日志系统,您可以留言稍后解释。

    javalogger.debug("resultisname:{}andage:{}",name,age);

    接下来,我们将解释如何组合log4j和slf4j的日志组件,并在我们的框架应用中应用它们,首先是理论,然后是实践,不多说。让我们首先看看在Maven的pom配置文件中配置这两个日志组件的依赖关系。

    javaorg.slf4jslf4j-api1.7.21org.slf4jslf4j-log4j121.7.21其中slf4j-api为外界提供了独立的日志接口,而slf4j-log4j12则是slf4j对log4j12的支持。需要注意的是,这两个组件的版本应该一致,避免不必要的麻烦。完成了相关组件的介绍,并谈到了日志系统的配置。在项目的资源文件夹下为下一个配置创建一个新的log4j.properties文件。

    java###设置rootLogger,一般在开发环境中使用debug级别日志log4j.rootLogger=info,stdout,D,E##控制台输出log4j.appender.stdout=org.apache.log4j.ConsoleAppender###默认是system.outlog4j.appender.stdout.Target=System.out###布局格式,可以灵活指定log4j.appender.stdout.layout=org.apache.log4j.PatternLayout###消息格式化log4j.appender.stdout.layout.ConversionPattern=[%-5p]%d{yyyy-MM-ddHH:mm:ss,SSS}method:%l%n%m%n##以每天一个文件输出日志log4j.appender.D=org.apache.log4j.DailyRollingFileAppender##输出文件目录log4j.appender.D.File=/usr/log/info.log##消息增加到指定的文件中,false表示覆盖指定文件内容log4j.appender.D.Append=true##输出信息最低级别log4j.appender.D.Threshold=INFOlog4j.appender.D.layout=org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern=%-d{yyyy-MM-ddHH:mm:ss}[%t:%r]-[%p]%m%n如果是SpringBoot,也可以yml的形式配置,结构和组织会更清晰。最后以slf4j的形式简单说明一下应用程序中的日志打印操作。

    java//使用slf4j的Logger对象获取类名为Main的日志对象,一般Main指的是当前类的名称privatestaticLoggerlogger=Logger.getLogger(Main.class);publicstaticvoidmain(String[]args){Stringstr="测试字符串";logger.info("str:{}",str);}这个展示了logger.info(),debug(),error(),等的使用。,每种方法可以使用不同数量的参数来满足更多的需求。

    更刺激的去微信微信官方账号【老王说编程】> > >

作者信息

老王说编程 [等级:3]
发布了 19 篇专栏 · 获得点赞 14 · 获得阅读 225

相关推荐 更多