小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

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

slf4j+log4j在Java中实现日志记录的更多相关文章

  1. java中开源日志记录工具log4j

    日志:除了能记录异常信息,还可以记录程序正常运行时的关键信息. 使用log4j来进行日志文件记录经典步骤: 001.在项目中创建一个lib文件夹,然后将下载好的jar包copy到该文件夹下 002.对 ...

  2. Java中的日志——Java.util.logging、log4j、commons-logging

    Java中给项目程序添加log主要有三种方式,一使用JDK中的java.util.logging包,一种是log4j,一种是commons-logging.其中log4j和commons-loggin ...

  3. Java学习-007-Log4J 日志记录配置文件详解及实例源代码

    此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:20 ...

  4. java中的日志打印

    java中的日志打印: 日志工具类: #获取日志 INFO:表示获取日志的等级 A1:表示日志存器,可以自定义名称 #===DEBUG INFO log4j.rootLogger=DEBUG,A1,A ...

  5. JAVA 中LinkedHashMap要点记录

    JAVA 中LinkedHashMap要点记录 构造函数中可能出现的几个参数说明如下: 1.initialCapacity 初始容量大小,使用无参构造方法时,此值默认是16 2.loadFactor ...

  6. (14)ASP.NET Core 中的日志记录

    1.前言 ASP.NET Core支持适用于各种内置和第三方日志记录提供应用程序的日志记录API.本文介绍了如何将日志记录API与内置提供应用程序一起使用. 2.添加日志提供程序 日志记录提供应用程序 ...

  7. java中的日志组件-log4j

    1.为什么使用日志组件 Log4J是Apache的一个开放源代码项目,它是一个日志操作包,通过使用Log4J,可以指定日志信息输出的目的地,如控制台.文件.CUI组件.NT的事件记录器:还可以控制每一 ...

  8. 在云环境上使用SLF4J对Java程序进行日志记录

    我开发了一个Java应用,部署到云环境上之后,用postman测试发现不能按照我期望的工作,但是返回的消息对我没有任何帮助. 因为部署在云端的应用很难像本地Java应用一样调试,所以我打算用SLF4J ...

  9. Java中的日志管理

    日志是应用程序运行中不可缺少的一部分,JAVA中有很多已经成熟的方案,尽管记录日志是应用开发中并不可少的功能,在 JDK 的最初版本中并不包含日志记录相关的 API 和实现.相关的 API(java. ...

随机推荐

  1. 详解 anjularjs的ui-route(多视图、视图嵌套、视图传参)

    最近整理了一下anjularjs的第三方插件ui-route,在这就以一个demo的形式讲解一下.整片博客均以开头的demo代码为例.下边是个目录,大家可以酌情直接跳转浏览. 1. demo的代码 2 ...

  2. 转:jquery 父、子页面之间页面元素的获取,方法的调用

    一.jQuery 父.子页面之间页面元素的获取,方法的调用: 1. 父页面获取子页面元素: 格式:$("#iframe的ID").contents().find("#if ...

  3. 团队作业4——第一次项目冲刺(ALpha版本)第三天

    一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 1.界面 完成了前端的HTML页面设计 2.功能 完成了后端数据处理的全部基本功能: 数据结构设计及数据交互操作 博客页面数据 ...

  4. 201521123030 《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4 ...

  5. 201521123062《Java程序设计》第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.pare ...

  6. 201521123062《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 多态定义:同种形态不同定义 类注释格式 继承,共同行为及属性 在instanceof检查过后 ...

  7. 201521123086《java程序设计》第四周

    本章学习总结 尝试使用思维导图总结有关继承的知识点 1.2 使用常规方法总结其他上课内容. 为了不必要写重复的代码,可以运用继承,用关键字extends来定义一个类,被继承的类叫做父类,继承的类叫做子 ...

  8. JAVA课程设计个人博客 学生基本信息管理 201521123117 李心宇

    1. 团队课程设计博客链接 http://www.cnblogs.com/ll321/p/7067598.html 2.个人负责模块或任务说明 ①主要有三个界面的设计,包括:登录界面,功能选择界面还有 ...

  9. linux系统命令<二>----du的使用方法

    1> 要显示一个目录树及其每个子树的磁盘使用情况 du /home/linux 这在/home/linux目录及其每个子目录中显示了磁盘块数. 2> 要通过以1024字节为单位显示一个目录 ...

  10. java基础知识2--String,StringBufffer,StringBuilder的区别

    String,StringBufffer,StringBuilder的区别 1.可变不可变方面 String类中使用字符数组保存字符串  ,final 修饰当然是不可变的,用String来操作字符串的 ...