Java日志上云三剑客:Log4J/LogBack/Produc

作者: 阿里云云栖号 | 来源:发表于2018-02-09 14:04 被阅读323次

摘要: 日志服务提供30多种数据采集方式,针对服务器、移动端、嵌入式设备及各种开发语言都提供完整的接入方案。对 Java 开发者而言,没有什么比熟悉的日志框架 Log4j、Log4j2、Logback Appender 更好使的了。

日志中心化之路

近几年来,无状态编程、容器、Serverless 编程方式的诞生极大提升了软件交付与部署的效率。在架构的演化过程中,可以看到两个变化:

        应用架构开始从单体系统逐步转变微服务,其中的业务逻辑随之而来就会变成微服务之间调用与请求。

        资源角度来看,传统服务器这个物理单位也逐渐淡化,变成了看不见摸不到的虚拟资源模式。

从以上两个变化可以看到这种弹性、标准化架构背后,原先运维与诊断的需求也变得越来越复杂。在10年前我们可以快速登陆到服务器上捞取日志,Attach进程的模式已再也不存在,面对我们的更多是一个标准化的“黑盒”。

​ 为了应对这种变化趋势,诞生一系列面向DevOps诊断与分析的工具。例如集中式监控、集中式日志系统、以及SaaS化的各种部署、监控等服务。

​ 日志中心化解决的是以上这个问题,既应用产生日志后实时(或准实时)传输到中心化的节点服务器,例如Syslog,Kafka,ELK,Hbase进行集中式存储是一些常见的模式。

中心化四个好处

        使用方便:在无状态应用中最麻烦的要属Grep日志了,集中式存储只要运行一个Search命令就能够替代原先漫长的过程

        存储与计算分离:定制机器硬件时无需为日志存储考虑空间大小

        更低成本:集中式日志存储可以削峰填谷,预留更高水位

        安全:当发生黑客入侵以及灾难时,关键数据留作取证

采集端 (Java系列)

日志服务提供30+数据采集方式,针对服务器、移动端、嵌入式设备及各种开发语言都提供完整的接入方案。对Java 开发者而言,没有什么比熟悉的日志框架 Log4j、Log4j2、Logback Appender更好使的了。

对Java应用而言,目前有两种主流的日志采集方案:

        Java程序将日志落盘,通过Logtail进行实时采集

        Java程序直接配置日志服务提供的Appender,当程序运行时,实时将日志发完服务端

两者的差别如下:

通过Appender可以在不改任何代码情况下,通过Config就能够非常容易完成日志实时采集工作,日志服务提供的Java系列Appender有如下几大优势:

无需修改程序,修改配置即生效

异步化 + 断点续传:IO不影响主线程,支持一定网络和服务容错

高并发设计:满足海量日志写入需求

支持上下文查询功能:写入支持支持在服务端还原原始进程中精确上下文(前后N条日志)

Appender 介绍与使用

目前提供Appender如下,底层均使用 aliyun-log-producer-java 完成数据的写入。

aliyun-log-log4j-appender

aliyun-log-log4j2-appender

aliyun-log-logback-appender

这四者的差别如下:

接入 Appender

可参考 aliyun-log-log4j-appender 的配置步骤部分接入 appender。

配置文件log4j.properties的内容如下:

查询与分析

通过上述方式配置好 appender 后,Java 应用产生的日志会被自动发往日志服务。可以通过 LogSearch/Analytics 对这些日志实时查询和分析。本文提供的样例的日志格式如下:

记录用户登录行为的日志

记录用户购买行为的日志

开启查询分析

若要对数据进行查询和分析,需要首先开启查询分析功能。开启步骤如下:

登录 日志服务管理控制台。

选择目标项目,单击项目名称或者单击右侧的 管理。

选择目标日志库并单击日志索引列下的 查询。

单击右上角的 设置查询分析 > 设置。

进入设置菜单,为下列字段开启查询。

分析实例

以下视频包含了下述5个分析实例。

视频地址:http://cloud.video.taobao.com//play/u/2450842572/p/1/e/6/t/1/50073510333.mp4

1. 统计过去1小时发生Error最多的3个位置

语法示例:level: ERROR |selectlocation ,count(*)ascountGROUPBYlocationORDERBYcountDESCLIMIT3

2. 统计过去15分钟各种日志级别产生的日志条数

语法示例:

3. 日志上下文查询

对于任意一条日志,能够精确还原原始日志文件上下文日志信息。

参阅: 上下文查询

4. 统计过去1小时,登录次数最多的三个用户

语法示例:login |SELECTregexp_extract(message,'userID=(?[a-zA-Z\d]+)',1)ASuserID,count(*)ascountGROUPBYuserIDORDERBYcountDESCLIMIT3

5. 统计过去15分钟,每个用户的付款总额

语法示例:order |SELECTregexp_extract(message,'userID=(?[a-zA-Z\d]+)',1)ASuserID,sum(cast(regexp_extract(message,'amount=(?[a-zA-Z\d]+)',1)ASdouble))ASamountGROUPBYuserID

本文作者:吴波bruce_wu

相关文章

  • Java日志上云三剑客:Log4J/LogBack/Produc

    摘要:日志服务提供30多种数据采集方式,针对服务器、移动端、嵌入式设备及各种开发语言都提供完整的接入方案。对 Ja...

  • SpringBoot--实战开发-整合Logback(五)

    一、Logback简介   Logback是java的日志开源组件,是log4j创始人写的,性能比log4j要好,...

  • SpringBoot 整合Logback框架

    新日志框架LogBack介绍 1.常用处理java的日志组件 slf4j,log4j,logback,common...

  • Logback

    Logback logback是什么 Ceki Gülcü在Java日志领域世界知名。他创造了Log4J ,这个最...

  • logback 详解

    简介 Java 日志框架众多——常用的有 java.util.logging、log4j、logback、comm...

  • 【日志】基本概念

    1.日志工具介绍 有很多的日志工具,主要分为两类: 日志实现类:Log4j、Logback、java自带 java...

  • log4j和logback区别

    在java世界里, 日志框架通常有log4j 和slf4j, 而日志实现常用有log4j和logback, 通常情...

  • logback 配置详解

    概览 简单地说,Logback 是一个 Java 领域的日志框架。它被认为是 Log4J 的继承人。Logback...

  • Java日志系统的总结

    日志系统归类以及关系 常用的日志框架: slf4j、logback 、log4j、log4j2、JUL(java ...

  • Logback配置使用

    Log Java日志:(slf4j、log4j、logback、common-logging ) slf4j 是规...

网友评论

    本文标题:Java日志上云三剑客:Log4J/LogBack/Produc

    本文链接:https://www.haomeiwen.com/subject/keyftftx.html