slf4j+log4j在Java中实现日志记录
小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中实现日志记录的更多相关文章
- java中开源日志记录工具log4j
日志:除了能记录异常信息,还可以记录程序正常运行时的关键信息. 使用log4j来进行日志文件记录经典步骤: 001.在项目中创建一个lib文件夹,然后将下载好的jar包copy到该文件夹下 002.对 ...
- Java中的日志——Java.util.logging、log4j、commons-logging
Java中给项目程序添加log主要有三种方式,一使用JDK中的java.util.logging包,一种是log4j,一种是commons-logging.其中log4j和commons-loggin ...
- Java学习-007-Log4J 日志记录配置文件详解及实例源代码
此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:20 ...
- java中的日志打印
java中的日志打印: 日志工具类: #获取日志 INFO:表示获取日志的等级 A1:表示日志存器,可以自定义名称 #===DEBUG INFO log4j.rootLogger=DEBUG,A1,A ...
- JAVA 中LinkedHashMap要点记录
JAVA 中LinkedHashMap要点记录 构造函数中可能出现的几个参数说明如下: 1.initialCapacity 初始容量大小,使用无参构造方法时,此值默认是16 2.loadFactor ...
- (14)ASP.NET Core 中的日志记录
1.前言 ASP.NET Core支持适用于各种内置和第三方日志记录提供应用程序的日志记录API.本文介绍了如何将日志记录API与内置提供应用程序一起使用. 2.添加日志提供程序 日志记录提供应用程序 ...
- java中的日志组件-log4j
1.为什么使用日志组件 Log4J是Apache的一个开放源代码项目,它是一个日志操作包,通过使用Log4J,可以指定日志信息输出的目的地,如控制台.文件.CUI组件.NT的事件记录器:还可以控制每一 ...
- 在云环境上使用SLF4J对Java程序进行日志记录
我开发了一个Java应用,部署到云环境上之后,用postman测试发现不能按照我期望的工作,但是返回的消息对我没有任何帮助. 因为部署在云端的应用很难像本地Java应用一样调试,所以我打算用SLF4J ...
- Java中的日志管理
日志是应用程序运行中不可缺少的一部分,JAVA中有很多已经成熟的方案,尽管记录日志是应用开发中并不可少的功能,在 JDK 的最初版本中并不包含日志记录相关的 API 和实现.相关的 API(java. ...
随机推荐
- Color.js增强你对颜色的控制
往逝之因 不要低头,皇冠会掉... 可你又没有皇冠 Color.js 增强你对颜色的控制 阅读目录 轻松管理颜色--color.js库 使用color.js Accessor Methods 你该知 ...
- hashMap和treeMap
前言 首先介绍一下什么是Map.在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value.这就是我们平时说的键值对. ...
- JAVA基础第七组(5道题)
31.题目:将一个数组逆序输出. 1.程序分析:用第一个与最后一个交换. package com.niit.homework1; /** * @author: Annie * ...
- 201521123073 《Java程序设计》第7周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码: ...
- 201521123088《java程序与设计》第9周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 1. 常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出 ...
- 201521145048《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...
- java :instanceof用法
Java中的instanceof是用来判断某个实例是不是某个类的实例. 例如:A instanceof B (A为某个实例,B为某个类名) 如果A为B的实例,则:(A instanceof B)==t ...
- xml是什么,为什么要用xml
XML概念 众所周知,xml常用语数据存储和传输,文件后缀为 .xml: 它是可扩展标记语言(Extensible Markup Language,简称XML),是一种标记语言. 标记,指计算机所能理 ...
- Python学习笔记013_正则表达式
Python中的正则表达式是通过 re 模块实现的. 通配符 . 表示除了换行以外的任何字符; 编写正则表达式时使用 r're' , r + 正则表达式内容 >>> impor ...
- temp-内外网同时上的例子
@echo off rem //不少公司的网管试图解决双网卡问题,下面我就给大家详细的讲解一下双网卡同时使用的方法,这样即可保障内网的安全,又能解决电脑访问外网的问题,一举两得.希望大家喜欢.rem ...