接触过Java的朋友应该都会知道,java的开源框架百花齐放,实现同样的功能,总能找到几个强大的开源框架来进行选择。在日志方面,Java同样不逊色。除了JDK本身自带的简单的日志工具,java还有如log4j,commons-loggin,slf4j,logback等众多第三方工具框架可供开发者使用,其中,上述几个框架,虽说都实现了日志记录的功能,但相互之间各分伯仲,同时,也存在着一定的联系。比如,log4j,slf4j,logback就是出自同一个人之手。
  在了解各个框架之前,首先过过大部分日志框架的使用时会遇到的一些概念。
1、日志工具类(logger):通常,大部分的日志框架都会定义一个主要的日志输出的工具类,开发者只需要声明该类,即可实现大部分的日志输出操作
2、日志输出级别(Level):日志输出的级别,意味着该日志的重要程度,大部分的日志框架的级别会分为:Debug(调试模式),Info,warn,error,fatal,其中,根据级别的大小排序,debug>info>warn>error>fatal。级别的大小,将会影响日志的输出,将级别设置的越高,输出的信息将会越多
3、日志输出格式(format):日志输出的格式,通常可以进行自定义,通过自定义的格式,输出的详细效果将不同
4、日志输出的方式:即将日志输出到哪?常见的输出方式包括如:控制台,文本文件,数据库等
5、日志分割:日志文件若以文件的方式进行输出的话,会存在文件大小问题,所以需要对日志进行分割,分割的方式可以分为按大小,按日期等。
  如图,常见的日志框架的工作流程大约都会围绕着几个对象展开。首先,通过日志工厂产生一个日志工具类,通过该类来进行日志的输出和日志输出级别的设置,该类的输出,其实是通过另外的框架中定义的不同类型输出类进行输出,常见的包括文件输出,数据库输出,都有与之相对应的日志输出类。同时,该类接收来自配置文件或者开发者自定义的日志输出格式,会根据该日志格式进行日志的输出。
  了解过大部分日志框架的工作方式,接下来了解一下,java的一些日志框架。
  首先,java日志框架嫡长子,jdk自带的log工具,该工具自JDK1.4版本开始就包含在java.util.logging包下。该工具由于太过粗糙,所以并没有得到广泛的使用,但是log框架应有的日志处理功能还是能够实现的:
以下是通过JDK自带的日志工具实现输出的实例代码:
 1 public class SimpleLog {
 2
 3
 4     public static void main(String[] args) throws SecurityException, IOException {
 5         Logger log=Logger.getLogger("Test");
 6         //添加log处理,默认是console
 7         ConsoleHandler console=new ConsoleHandler();
 8         console.setLevel(Level.ALL);
 9         log.addHandler(console);
10         FileHandler file=new FileHandler("log.log");
11         file.setLevel(Level.WARNING);
12         log.addHandler(file);
13         //设置日志输出格式
14         file.setFormatter(new Formatter() {
15
16             @Override
17             public String format(LogRecord record) {
18                 // TODO Auto-generated method stub
19                 return new SimpleDateFormat("yyyy-MM-dd hh-mm-ss").format(new Date(record.getMillis())) +"------"+record.getLevel()+"-------"+record.getClass()+"-------"+record.getLoggerName()+"----"+record.getMessage()+"\t\n";
20             }
21         });
22         console.setFormatter(new Formatter() {
23
24             @Override
25             public String format(LogRecord record) {
26                 return new SimpleDateFormat("yyyy-MM-dd hh-mm-ss").format(new Date(record.getMillis())) +"------"+record.getLevel()+"-------"+record.getClass()+"---"+record.getSourceMethodName()+"-------"+record.getLoggerName()+"----"+record.getMessage()+"\t\n";
27             }
28         });
29         //日志控制
30         log.log(Level.SEVERE, "测试日志");
31         log.log(Level.INFO, "测试日志");
32         log.log(Level.WARNING, "测试日志");
33         log.log(Level.OFF, "测试日志");
34
35     }

  接下来,看一下常见的日志框架,common-loggin,log4j,slf4j,logback。其实,个人认为,真正其中真正算是日志框架的只有log4j和logback而已。因为common-logging和slf4j都是进行日志框架整合的工具,本身并没有独特的日志处理功能。commons-logging其实是一个日志集合api,它通过检测classpath环境下存在怎么样的log工具,然后通过调用该工具来进行日志输出操作 。默认情况下,common-logging是通过jdk自带的log工具来实现日志输出的,当检测到项目中存在log4j此类的日志框架及其配置文件的时候,common-logging就会去调用该框架来进行日志的输出。
  接着,看下log4j,一个强大的日志框架。它支持文件俺输出,复杂的自定义格式输出,支持输出成html,数据库等,一系列的强大功能让它成为了许多开源框架首选的日志工具。具体的关于log4j的配置,后续继续更新。
  再说说slf4j,其实它和common-logging有相似的功能,只不过,它并不是通过自己实现日志的整合,而是通过定义接口的,定义标准的方式进行的。Common-logging是通过自身来实现日志框架的调用,而slf4j并不同,它自身其实并没有实现功能,它定义了接口,使用它进行日志输出,通常需要导入slf4j的标准包,日志框架的包,还有就是继承了slf4j定义的接口的操作对应日志框架的实现类包。表面上,我们是在使用slf4j进行日志输出,其实,我们使用的是对应的实现类包中的方法进行日志输出。
  最后一个说到的日志框架,是logback,他和slf4j,log4j是同一个作者。后期,log4j停止了更新后,他又开源了一个新的日志框架就是logback,目前,国外的许多框架也已经开始使用logback了。因为是同出一人,所以logback的一些api其实与log4j有些相似之处,同时,logback也符合slf4j定义的标准,所以如果在项目中使用了slf4j和log4j,后期要改成logback,需要做的调整会比较少。

转载于:https://www.cnblogs.com/Seanit/p/5126019.html

循序渐进看Java web日志跟踪(2)-Java日志API认识相关推荐

  1. java web 请求跟踪_java web 项目跟踪用户操作

    java web项目,就几个JSP页面,本人怎么跟踪用户什么时间点击了那个jsp页面,什么时候登录的,什么时候关闭jsp页面的,把跟踪用户的操作(基本上就上面这三个操作),存入数据库里面,什么时候干什 ...

  2. java中library找不到了,java web 找不到java.library.path途径

    java web 找不到java.library.path路径 项目是在window下开发的,现在放到linux下部署需要加载一个.so的文件,但是调用 System.loadLibrary(&quo ...

  3. Java Web项目中缺少Java EE 6 Libraries怎么添加

    Java Web项目中缺少Java EE 6 Libraries怎么添加 具体步骤如下: 1.项目名称上点击鼠标右键,选择"Build Path-->Configure Build P ...

  4. [Java Web]会话跟踪技术

    ⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:@逐梦苍穹 ⭐所属专栏:Java Web 目录 1.会话跟踪技术概述 2.数据共享 3.Cookie 4.Sess ...

  5. java web源代码_检测Java Web应用程序而无需修改其源代码

    java web源代码 与其他系统进行交互时,大多数Java Web应用程序都使用标准Java接口. 诸如Web页面或REST服务器之类的基于HTTP的服务是使用接口javax.servlet.Ser ...

  6. java web 来源页_Java:Java Web--分页效果

    先来看一看分页的实现原理 万能公式.jpg 项目目录.PNG 首先,新建Java Web项目 一. 梳理业务逻辑 重定向到URL(跳转到StudentViewAction页面)//index.jsp页 ...

  7. java 抛出异常_我的Java Web之路51 - Java异常基础

    本系列文章旨在记录和总结自己在Java Web开发之路上的知识点.经验.问题和思考,希望能帮助更多(Java)码农和想成为(Java)码农的人. 目录 介绍 异常的本质 Java异常的设计 Java异 ...

  8. java web构建_使用Java构建一个宁静的Web服务

    java web构建 介绍 (Introduction) Due to its exponential growth, REST(Representational State Transfer) ha ...

  9. java web前端哪个城市,Java Web 是前端还是后端

    Java Web 是前端还是后端 Java Web 是前端还是后端? Java Web是属于后端,Java Web就是用Java技术开发的Web应用,而Java是一种可以编写跨平台应用软件.完全面向对 ...

  10. 《Java Web开发实战》Java工程师推荐的进阶之路

    <Java Web开发实战>一书更加趋于实战性.此教材由浅入深.循序渐进,在语法阐述时尽量避免术语和公式,使初学者能够快速入门,全面掌握实战技能.它既可以作为高等院校本.专科计算机相关专业 ...

最新文章

  1. Spring使用Quartz配置调度事务
  2. python3扫盲系列-(3)
  3. dbsync for oracle ms sql,DBSync for Firebird and MSSQL
  4. 将XML文件数据插入到数据库中
  5. 20190602:JDBC的增删改操作实践
  6. ios8升级ios12教程_iOS Hello World示例教程
  7. 电脑时间校准方法,怎么校准电脑时间
  8. Andriod Studio下载安装教程
  9. 计算机无法验证驱动程序需要,Windows 无法验证此设备所需的驱动程序的数字签名。某软件或硬件最近有所更改,可能安装了签名错误或损毁的文件,或者安装的文件可能是来路不明的恶意软件。(代码52)...
  10. 微信小程序 js创建Object对象
  11. python 多任务
  12. 华为路由器时间同步_华为NTP配置实例
  13. 蓝桥18年JavaC组:字母阵列
  14. PS创意合成犀牛背上的美女(附素材)
  15. 6-7 能被7或11整除的所有整数
  16. 三维粒子特效ae插件Trapcode Particular有效注册版
  17. 浪潮nf5270m4导轨安装_浪潮NF5270M4安装windows2012+FTP服务器
  18. android - ROS Wiki 首页翻译(ros第一篇)
  19. 泛微 E-Office文件上传漏洞复现(CVE-2023-2523、CVE-2023-2648)
  20. 仅用半年时间,我的月薪从3K飞跃到17K,纵有疾风起,人生不言弃

热门文章

  1. ES01 数据类型、正则表达式、身份证校验
  2. 怎么说呢。留个纪念,关于字符串的重载
  3. 容器技术的落地还要依靠SDN
  4. Cosmos OpenSSD--greedy_ftl1.2.0(一)
  5. 项目管理(五)- 风险检测表
  6. 移动客户端与服务器端安全通信方案
  7. [转贴]Ultimate List of Free Windows Software from Microsoft
  8. Oracle HA 之 oracle 11.2 rac库配置active dataguard
  9. 重载赋值运算符含动态申请
  10. HttpHelps类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式,可以设置代理...