
# 中间件-Redis日志
Redis的日志主要用于记录Redis服务器的运行状态、相关事件以及客户端执行的命令等信息。Redis的日志主要有系统日志和慢查询日志。
1. 系统日志（System Log）：
   - 记录Redis服务器的启动、关闭、配置加载、持久化操作（如 RDB 和 AOF）等系统级事件。
   
   - Redis的系统日志级别包括debug、verbose、notice、warning和error。您可以通过配置文件redis.conf 中的loglevel参数来设置日志级别。
   
   - 系统日志的输出方式可以是标准输出（stdout）或文件输出（file）。在配置文件中，使用logfile参数来指定日志文件的路径。
    
2. 慢查询日志（Slow Query Log）：
   - 用于记录执行时间超过指定阈值的命令。这有助于识别和优化性能瓶颈。
   
   - 慢查询日志的阈值（即命令执行时间的上限）可以通过 redis.conf 中的 slowlog-log-slower-than 参数来设置，单位是微秒。
   
   - 慢查询日志的最大长度（即可以保存的慢查询记录数）可以通过 slowlog-max-len 参数来设置。
   
   - 慢查询日志存储在内存中，不会写入磁盘文件。但您可以使用Redis命令SLOWLOG来查看和获取慢查询日志的内容。
    
#### 采集方法
使用ICAgent采集日志，接入前请参考[安装ICAgent（区域内主机）](https://support.huaweicloud.com/usermanual-lts/lts_02_0013.html)完成ICAgent安装。然后再通过采集ECS-文本日志方式将日志上报至LTS服务，详细操作请参考[云主机ECS文本日志接入LTS](https://support.huaweicloud.com/usermanual-lts/lts_04_1031.html)。
#### Redis日志示例以及字段含义
1. 系统日志（System Log）：
   ```
   [12345] 2024-04-30 15:30:00.123456 [info] # Server started, Redis version 6.x.x  
   [12345] 2024-04-30 15:30:15.654321 [notice] * 1 client connected (IP: 127.0.0.1,port: 6379)  
   [12345] 2024-04-30 15:30:30.987654 [warning] # There are 100 clients waiting in the background, you may need to check your latency.  
   [12345] 2024-04-30 15:31:00.000000 [debug] * DB saved on disk  
   [12345] 2024-04-30 15:32:00.000000 [error] # OOM command not allowed when used memory > 'maxmemory'.
   ```
   表1系统日志字段说明 
   | 字段   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | 示例                                  |
   |:---|:---|:---|
   | PID  | Redis服务器的进程ID（PID）。它用于在系统级别上识别和管理Redis进程。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | \[12345\]                           |
   | 时间戳  | 日志条目的时间戳，通常包括日期、时间和毫秒数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | 2024-04-30 15:30:00.123456          |
   | 日志级别 | 日志级别 (\[info\]、\[notice\]、\[warning\]、\[debug\]、\[error\])：Redis使用不同的日志级别来指示日志条目的重要性。常见的日志级别包括： - \[info\]：信息性消息，通常表示服务器正常运行的通知。  - \[notice\]：通知性消息，通常表示重要但不紧急的事件。  - \[warning\]：警告性消息，表示可能出现问题的情况，但尚未导致故障。  - \[debug\]：调试信息，通常用于开发人员调试和故障排除。  - \[error\]：错误消息，表示发生了错误或异常情况。   | \[info\]                            |
   | 日志内容 | 描述了发生的具体事件或操作。例如"Server started"表示Redis服务器已启动，"1 client connected"表示有一个客户端连接到Redis服务器，"OOM command not allowed"表示由于超出了最大内存限制，Redis拒绝执行某个命令。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | Server started, Redis version 6.x.x |
   | 附加信息 | 在某些日志条目中，可能包含有关事件的附加信息。例如在"1 client connected"条目中，包含了连接客户端的IP地址和端口号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | IP: 127.0.0.1,port: 637             |
      
   
2. 慢查询日志（Slow Query Log）
   ```
   1) 1) (integer) 12345  
      2) (integer) 1598765432  
      3) (integer) 123456  
      4) 1) "GET"  
         2) "somekey"
   ```
   表2系统日志字段说明 
   | 字段     | 说明                                                                                                                                                                                                                              | 示例                   |
   |:---|:---|:---|
   | 唯一标识符  | 慢查询日志条目的唯一标识符。随着时间的推移，Redis会继续为新的慢查询日志条目增加序号。                                                                                                                                                                                   | (integer) 12345      |
   | 时间戳    | 录了这条慢查询日志产生的时间戳，通常是Unix时间戳（以秒为单位）。                                                                                                                                                                                              | (integer) 1598765432 |
   | 执行时间   | 执行慢查询命令所花费的时间，单位是微秒（μs）。                                                                                                                                                                                                        | (integer) 123456     |
   | 命令及其参数 | - "GET"：这是被记录为慢查询的命令本身，这里是GET命令。  - "somekey"：这是GET命令的参数，即被检索的键（key）。   | -                    |
      
   
 
#### 日志位置
在Redis的配置文件redis.conf中指定日志文件的路径。找到logfile配置项，例如：
```
logfile "/var/log/redis/redis-server.log"
```
