JAVA日志的前世今生

       这世界上很多事情,看起来就像彩虹一样炫目而神奇,实际上背后蕴含着随处可见的原理。就好像静儿几年前买过一件超贵的防辐射服,当时销售人员把手机严严实实的包在防辐射服里,然后让我打电话测试,果然没有信号。

直到今天,静儿为了写文章,把自己蒙在空调被里,额,竟然连不上网。于是掀起一个被角,“大象”的巡检结果哒哒哒的弹出来了。然后我感慨:自己当年何苦买那么贵一个“围裙”。

    日志作为逻辑跟踪、线上问题排查、监控报警的有效基础利器被开发人员所熟知。问题发现、定位到解决,都离不开它,真是如彩虹般绚烂。而从它的演进过程也能看到现代互联网发展的一个缩影。


一 最原始的日志:print、alert


        啥?这也算日志。

是的。记得大概十年前,不管是C/S模式(客户端+服务端模式)还是B/S(浏览器+服务端模式)。因为只有前端和后端交互这一层,整个项目都做在一个工程里,大家验证基本上用的前端就是alert,后台就是System.out.print。需求决定设计。链路短,这个基本就够用。

二 JUL

java有自己的日志框架,细心的朋友可能注意到过:java.util.logging。

由于其API并不完善,对开发者不是很友好,对于日志的级别分类也不是很清晰。所以大家用的很少。

三 Log4j

有人注意到JUL的一些缺陷,做出了Log for Java。就是曾静风靡一时的Log4j。

Log4j是Apache的一个开源项目,通过使用Log4j,可控制日志信息输送的目的地是控制台、文件、数据库等。也可以控制每一条日志的输出格式,通过定义每一条日志信息的级别,能够更加细致的控制日志的生成过程。

Log4j有7中不同的log级别,按照等级从低到高依次为trace

Log4j支持两种格式的配置文件:properties和xml。包含三个主要的组件:Logger、appender、Layout。



四 JCL

Jakarta对于java开发人员来说,第一反应不是印度尼西亚的首都,而是Jakarta Commons。而JCL就是Jakarta Commons-Logging的缩写。

JakartaCommons是Jakarta的一个子项目,目的是创建和维护独立与其他框架和产品的程序包。

JCL的初衷是:java自身的一些包都用自己的JUL,而Log4j又那么好用。怎么让他们愉快的相处呢?

它就提供了一套API门面来掩盖真正的Logger实现。这就是设计模式里常用的门面模式,可以进行不同Logger实现的切换。它的缺点是算法复杂,出了异常很难修复。

五 SLF4J

     SLF4J=Simple Logging Facade for Java,中文叫:简单日志门面。他的作者就是Log4j的作者。

SLF4J为了解决JCL的缺点而生,简单易用。


六 Logback

    Log4j的作者是对技术有着执着的追求的技术学者。他为了实现一个可靠、通用、快速而又灵活的Java日志框架这一目标,又发明了Logback。

    Logback有三个模块

1.logback-core:日志处理核心组件

2.logback-classic:完整的实现了SLF4j API,用于切换日志实现。

3.logback-access:与Servlet容器集成提供通过http来访问日志的功能。

    因为logback比log4j大约快10倍、消耗更少的内存,迁移成本也很低,自动压缩日志、支持多样化配置、不需要重启就可以恢复I/O异常等优势,又名噪一时。反正静儿是用了很多年。


七 Log4j2

    Log4j2与Logback非常类似,但是它有自己的亮点:如插件式结构、配置文件优化、异步日志。


八 日志系统

    上面所说的日志都是代码层面。但是实际使用时由于线上都是多个节点并行在跑。为了看日志,不得不登录多个服务器。所以聪明的技术人员就想到了使用RSA授权来集中多个服务的操作于一个终端,这样的工具代表是:polysh。

但是这样,工具使用之前的操作还是挺麻烦的,不如使用界面做一个系统。

Scribe是Facebook开源的日志收集系统。它从各种日志源收集日志,存储在中央存储系统,进行集中的分析处理。

    业界比较流行的做法是使用Scribe+ES。Scribe收集上来的日志放入搜索引擎,用户使用搜索引擎来灵活的查看自己感兴趣的日志,如同访问一个网站。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,165评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,720评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,849评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,245评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,596评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,747评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,977评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,708评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,448评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,657评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,141评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,493评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,153评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,890评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,799评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,685评论 2 272

推荐阅读更多精彩内容

  • 历史 log4j可以当之无愧地说是Java日志框架的元老,1999年发布首个版本,2012年发布最后一个版本,20...
    kelgon阅读 10,061评论 3 53
  • 作为Java开发人员,对于日志记录框架一定非常熟悉。而且几乎在所有应用里面,一定会用到各种各样的日志框架用来记录程...
    意识流丶阅读 13,656评论 0 13
  • 对于Java的日志框架,你也许会经常看到这些名词: Log4j、Log4j2 Logback Slf4j JCL ...
    NoahU阅读 3,885评论 0 15
  • 前言 最近学习开java web服务器开发,开始学习java,处理业务逻辑,但对其中的日志比较好奇,之前没怎么接触...
    九风萍舟阅读 3,241评论 1 6
  • 在项目开发过程中,我们可以通过 debug 查找问题。而在线上环境我们查找问题只能通过打印日志的方式查找问题。因此...
    Java架构阅读 3,409评论 2 41