本文以电商平台的日志为例,介绍Log4j日志的分析操作。

前提条件

  • 已采集Log4j日志。具体操作,请参见采集Log4j日志
  • 已配置索引。具体操作,请参见创建索引
    本案例的索引如下图所示。指定字段查询

背景信息

Log4j是Apache的一个开放源代码项目,通过Log4j可以控制日志的优先级、输出目的地和输出格式。日志级别从高到低为ERROR、WARN、INFO、DEBUG,日志的输出目的地指定了将日志打印到控制台还是文件中,输出格式控制了输出的日志内容格式。

例如某电商公司,希望通过分析用户行为习惯数据(例如用户登录方式、上线的时间点及时长、浏览页面、页面停留时间、平均下单时间、消费水平等)、平台稳定性、系统报错、数据安全性等信息获取平台的最佳运营方案。针对此需求,日志服务提供一站式数据采集与分析功能,帮助客户存储并分析日志。日志服务采集到的日志样例如下所示。
  • 记录用户登录行为的日志
    level:  INFO  
    location:  com.aliyun.log4jappendertest.Log4jAppenderBizDemo.login(Log4jAppenderBizDemo.java:38)
    message:  User login successfully. requestID=id4 userID=user8  
    thread:  main  
    time:  2022-01-26T15:31+0000
  • 记录用户购买行为的日志
    level:  INFO  
    location:  com.aliyun.log4jappendertest.Log4jAppenderBizDemo.order(Log4jAppenderBizDemo.java:46)
    message:  Place an order successfully. requestID=id44 userID=user8 itemID=item3 amount=9  
    thread:  main  
    time:  2022-01-26T15:31+0000

操作步骤

  1. 登录日志服务控制台
  2. 在Project列表区域,单击目标Project。
  3. 日志存储 > 日志库页签中,单击目标Logstore。
  4. 输入查询和分析语句,然后单击15分钟(相对),设置查询和分析的时间范围。

    更多信息,请参见查询和分析

    • 统计最近1小时发生错误最多的3个位置。
      level: ERROR | select location ,count(*) as count GROUP BY  location  ORDER BY count DESC LIMIT 3
    • 统计最近15分钟各种日志级别的日志条数。
      | select level ,count(*) as count GROUP BY level ORDER BY count DESC
    • 统计最近1小时登录次数最多的三个用户。
      login | SELECT regexp_extract(message, 'userID=(?<userID>[a-zA-Z\d]+)', 1) AS userID, count(*) as count GROUP BY userID ORDER BY count DESC LIMIT 3
    • 统计最近15分钟每个用户的付款总额。
      order | SELECT regexp_extract(message, 'userID=(?<userID>[a-zA-Z\d]+)', 1) AS userID, sum(cast(regexp_extract(message, 'amount=(?<amount>[a-zA-Z\d]+)', 1) AS double)) AS amount GROUP BY userID