小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. 结对编程1 (四则运算基于GUI)

    https://git.coding.net/Luo_yujie/sizeyunsuan.app.git 201421123034 201421123032 1. 需求分析 这次作业新引用了语言选择, ...

  2. 201521123091 《Java程序设计》第4周学习总结

    Java 第二周总结 第四周的作业. 目录 1.本章学习总结 2.Java Q&A 3.使用码云管理Java代码 4.PTA实验 1.本章学习总结 1.1 尝试使用思维导图总结有关继承的知识点 ...

  3. 控制结构(10) 指令序列(opcode)

    // 上一篇:管道(pipeline) 发现问题 在一个正式项目的开发周期中,除了源代码版本控制外,还存在着项目的配置/编译/打包/发布等各种高频但非"核心"的脚本代码.职业程序员 ...

  4. 【Alpha】第一次项目冲刺

    今日站立式会议照片 每个人的工作 小组成员 昨天完成的工作 今天计划完成的工作 李志霖 继续访问用户以深入了解他们的需求,分别采用面访,qq等不同方式对意见进行了采集,面访了30个人,qq空间以链接的 ...

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

    第4周作业-面向对象设计与继承 1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 2. 书面作业 Q1.注释的应用使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclip ...

  6. 201521123087 《Java程序设计》第1周学习总结

    1.学习总结 初步了解面对对象编程思想 学会安装JDK和设置JAVA_HOME,PATH,CLASSPATH环境变量 简单了解java 2.书面作业 1.为什么java程序可以跨平台运行?执行java ...

  7. 201521123018 《Java程序设计》第14周学习总结

    1. 本章学习总结 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己的学号.姓名) 在自己建立的数据库上执行常见SQL语句(截图) 添 ...

  8. birt-j脚本调试 & 动态sql的实现

    一个比较好的birt问题解决网址: http://www.myexception.cn/h/1335919.html 1,Birt的JavaScript脚本简单调试 Birt中的js脚本不能用aler ...

  9. Django实现内容缓存

    1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会 ...

  10. php-laravel4.0框架 简单快速入门

    前提必须已经安装好了laravel4.0版本. 写入权限: 安装完 Laravel ,你还需要为web服务器设置 app/storage 目录的写入权限. 目录结构: 安装完框架后,你需要熟悉一下该项 ...