日志框架:提供日志调用的接口,实际的日志输出委托给日志系统实现。

  • JCL(Jakarta Commons Logging):比较流行的日志框架,很多框架都依赖JCL,例如Spring等。
  • SLF4j:提供新的API,初衷是配合Logback使用,但同时兼容Log4j。

日志系统:负责输出日志

  • Log4j:较早的日志系统,可以单独使用,也可配合日志框架JCL使用
  • Logback:Log4j的替代产品,需要配合日志框架SLF4j使用
  • JUL(java.util.logging):JDK提供的日志系统,较混乱,不常用

日志系统使用方式

日志框架 日志系统 说明
-- log4j log4j可单独使用,不推荐
JCL log4j log4j配合JCL使用
SLF4j logback logback配合SLF4j使用
SLF4j (SLF4j-Log4j12) + log4j log4j配合SLF4j使用,但需要使用SLF4j-Log4j12做桥接
SLF4j + JCL-over-SLF4j logback 使原来使用JCL+log4j的系统能使用logback输出日志
SLF4j + JCL-over-SLF4j SLF4j-log4j12 + Log4j 比较混乱的用法,框架使用SLF4j,但日志使用Log4j,同时兼容原来的JCL接口。这种使用方式多是由于复杂的包依赖,而每个包中使用了不同日志框架
SLF4j + JCL-over-SLF4j + log4j-over-slf4j SLF4j-log4j12 + log4j 更奇葩的用法,在上面的基础上还要兼容某些包直接使用log4j的场景

说明

  • JCL-over-SLF4j是兼容JCL接口并使用SLF4j日志框架的一个兼容框架,依赖SLF4j,但不能与JCL共存
  • SLF4j-Log4j12是为了能使Log4j工作于SLF4j环境而存在的一个兼容框架,与logback同作为日志系统,不能共存
  • log4j-over-slf4j是为了使用SLF4j框架并兼容直接使用log4j的场景

java日志框架与日志系统的更多相关文章

  1. Java日志框架:slf4j作用及其实现原理

    简单回顾门面模式 slf4j是门面模式的典型应用,因此在讲slf4j前,我们先简单回顾一下门面模式, 门面模式,其核心为外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用.用一 ...

  2. JAVA日志框架概述

            日志用来记录应用的运行状态以及一些关键业务信息,其重要性不言而喻,通常我们借助于现有的日志框架完成日志输出.目前开源的日志框架很多,常见的有log4j.logback等,有时候我们还会 ...

  3. Springboot 系列(四)Spring Boot 日志框架

    注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别. 前言 Spring 框架选择使用了 JCL 作为默 ...

  4. 【知识点】C++的日志框架

    常用的 C++ 日志框架 一.日志框架 一个经过专门设计的实用程序,用于规范应用程序的日志记录过程,就是日志框架.   日志框架可以自己编写(需要一定的能力哦),也可以由第三方(例如:log4cplu ...

  5. tomcat日志及logback相关日志框架

    一.重点问题整理 1.1 关于logback.xml中的路径设置问题 准备金系统的logback.xml中设置的路径是: <!-- 定义日志文件 输出位置 --> <property ...

  6. 日志框架 NLog

    这里按老规矩先进行和其它产品进行比较: 目前在.net平台存在两个比较老牌的日志框架分别为Log4net和NLog. 我们进行对这两种框架进行比较下 Log4net Log4net是一个老牌的日志框架 ...

  7. 深入理解Logger日志——框架绑定原理

    深入理解Logger日志--框架绑定原理 说到Logger日志的动态绑定,主要归功与Slf4j,在之前的文章也说过,Slf4j是类似于Apache Common-Logging,英文为Simple L ...

  8. Java日志框架:SLF4J,Common-Logging,Log4J,Logback说明

    Log4j  Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Syslog守护进程等 ...

  9. Java程序员最常用的8个Java日志框架

    转自:http://www.codeceo.com/article/8-java-log-framework.html 作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用.WEB应用 ...

随机推荐

  1. 1002 GTY's birthday gift

    GTY's birthday gift                                                                       Time Limit ...

  2. Java中的Scoket编程

    网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. java.net包中提供了两种常见的网络协议的支持: TCP: TCP是传输控制协议的缩写,它保障了两个应用程序之间的可靠 ...

  3. C语言bool类型定义

    在我们的C语言程序中,经常用到布尔类型,但是C标准并不支持布尔类型,但我们可以自己实现其类型,实现代码如下:typedef enum{ false = 0, ture = !false}bool;

  4. Android(java)学习笔记110:ScrollView用法

    理论部分 1.ScrollView和HorizontalScrollView是为控件或者布局添加滚动条 2.上述两个控件只能有一个孩子,但是它并不是传统意义上的容器 3.上述两个控件可以互相嵌套 4. ...

  5. ASP.NET MVC 4 批量上传文件

    上传文件的经典写法: <form id="uploadform" action="/Home/UploadFile" method="post& ...

  6. java 网络编程 模拟browser

    --java模拟实现browser,主要代码: package socket; import java.io.*; import java.net.*; public class MyHttpClie ...

  7. linux命令行操作快捷键

    在shell命令终端中,Ctrl+n相当于方向向下的方向键,Ctrl+p相当于方向向上的方向键. 在命令终端中通过它们或者方向键可以实现对历史命令的快速查找.这也是快速输入命令的技巧. 在命令终端中可 ...

  8. Android混淆打包配置总结

    Android打包失败出现Proguard returned with error code 1. See console的错误 这个问题是由于代码混淆引起的,找不到引用包. 只需在你的proguar ...

  9. C#的提交表单方式WebClient

    向网站提交页面的主要代码 string postString = "arg1=a&arg2=b";//这里即为传递的参数,可以用工具抓包分析,也可以自己分析,主要是form ...

  10. 写在十年 2007-09-15 (写给L之三)

    你知道吗? 那种时间很远,但心很近的感觉.   时间已经远去了十年, 但亲切的感觉依然清晰可见,   无论时光远去了十年,二十年,三十年, 永远…… 它已经植根,在心间……