
# 配置日志采集
CAE提供了日志采集的功能，将应用实例的日志自动采集并集中存储到云日志服务（LTS），实现统一管理、实时检索与长期留存，为运维人员快速定位故障、分析性能瓶颈提供数据支撑。
本章节以kafka组件为例，为您介绍自定义日志路径功能。
#### 约束与限制
- 如果日志文件挂载到系统目录，如"/"、"/var/run"等，会导致组件异常。建议挂载在空目录下，若目录不为空，请确保目录下无影响组件启动的文件，否则文件会被替换，导致组件启动异常，组件创建失败。
- 填写日志路径时，路径中需要包含日志的文件名，例如：/var/log/test/error.log；支持"\*.后缀名"格式，例如： /var/log/test/\*.log；不支持直接以通配符表示，例如：/var/log/test/\*，/var/log/test/\*.\*。
- 最多配置20条路径。
- 采集的日志文件须为文本类型文件。
- 所有组件会默认采集标准输出的日志，并放入stdout文件中。
- 日志路径与[云存储配置路径](https://support.huaweicloud.com/usermanual-cae/cae_03_0017.html)不能重复。
- 云存储日志采集路径在配置生效后，会在云存储子路径中额外创建以当前组件所在pod名命名的子目录。
- 云存储日志采集路径从云存储配置中读取，并且必须包含写权限 ，umask设置时必须保留读和写权限，即第二位不能为2，4，6。
- 云存储日志采集最多扫描5级深度的云存储子路径。
- 当您使用本地磁盘存储时，将会对存储规格进行限制，如超过规定存储规格，会导致组件重启。 存储规格配置详情请参见[临时存储的规格](https://support.huaweicloud.com/productdesc-cae/cae_01_0007.html#section5)。
 
#### 新增日志采集
![](https://support.huaweicloud.com/usermanual-cae/public_sys-resources/note_3.0-zh-cn.png)
最多支持配置 20 条日志采集路径。
1. [登录CAE控制台](https://console.huaweicloud.com/cae/)。
2. 在左侧导航栏中选择"组件配置"。
3. 在"组件配置"页面上方的下拉框中，选择待操作的组件。
4. 单击"日志采集"模块中的"编辑"。
5. 在右侧弹框中单击"新增日志采集路径"。
6. 参考[表1]，在"日志采集路径"下填入需要采集日志的路径。例如：/var/log/springboot.log。
   
    表1采集路径参数 
   | 参数名称   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   |:---|:---|
   | 日志采集类型 | 在日志采集类型下拉选项框中，可以选择"云存储"和"本地磁盘"。"云存储"和"本地磁盘"是两种不同的日志数据来源位置，决定了系统从何处获取需要采集的日志文件。 - 云存储：当选择"云存储"时，系统会采集存储在华为云上的存储服务中的日志文件，例如对象存储服务（OBS）、弹性文件服务（SFS）。  - 本地磁盘：当选择"本地磁盘"时，系统会采集存储在CAE服务所在服务器的日志文件，或采集存储在虚拟机直接连接的物理或虚拟硬盘的日志文件。                                                                                          |
   | 日志采集路径 | - 当日志采集类型选择"云存储"时，在下拉选项中选择已配置好的配置好的云存储，再填入需要采集日志的路径。若下拉选项中未显示云存储，则需要先配置云存储，详细操作请参见[配置云存储](https://support.huaweicloud.com/usermanual-cae/cae_03_0017.html)。  - 当日志采集类型选择"本地磁盘"时，填入需要采集日志的路径。   日志采集路径填写规则：填写日志路径时，路径中需要包含日志的文件名，例如：/var/log/test/error.log；支持"\*.后缀名"格式，例如： /var/log/test/\*.log；不支持直接以通配符表示，例如：/var/log/test/\*，/var/log/test/\*.\*。 |
      
   
   
7. 单击"保存"。
8. 设置高级设置。 
   系统默认按行采集显示程序打印的日志。在程序打印日志存在一条完整日志跨占多行的情况下，如果需要采集显示整条日志，您可以设置"日志格式"，开启多行日志。
   - **单行日志：**系统默认按行采集日志。
   
   - **多行日志：** 多行合并为一行，系统按设置的匹配规则采集日志，不满足匹配规则的日志行会与上一次满足匹配规则的日志行合并为一行。
     - 选择"日志时间"表示采用时间匹配方式。 时间通配符："分行模式"选择"日志时间"时，请输入时间通配符。
       例如日志中每条日志发生的时间格式是YYYY-MM-DD hh:mm:ss，则时间通配符按照规则应该填写YYYY-MM-DD hh:mm:ss。
       时间通配符填写示例：
       ```
       YY   - year (19)
       YYYY - year (2019)
       M    - month (1)      
       MM   - month (01)
       D    - day (1) 
       DD   - day (01)
       hh   - hours (23)
       mm   - minutes (59)
       ss   - seconds (59) 
       SSS  - millisecond（999）
       hpm     - hours (03PM)
       h:mmpm    - hours:minutes (03:04PM) 
       h:mm:sspm  - hours:minutes:seconds (03:04:05PM)
       hh:mm:ss ZZZZ (16:05:06 +0100)
       hh:mm:ss ZZZ  (16:05:06 CET)   
       hh:mm:ss ZZ   (16:05:06 +01:00)
       ```
       
     
     - 正则模式："分行模式"选择"正则模式"时，请根据日志中每条日志开头的格式输入相应的正则表达式。 正则模式填写示例：
       示例一：
       ```
       19:41:33.217 [http-nio-8000-exec-1] ERROR o.a.c.c.C.[.[localhost].[/].[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException: Cannot invoke "com.example.springboothello.controller.HelloController.write()" because "helloController" is null] with root cause
       java.lang.NullPointerException: Cannot invoke "com.example.springboothello.controller.HelloController.write()" because "helloController" is null
       at com.example.springboothello.controller.HelloController.nullPointException(HelloController.java:234)
       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
       at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.base/java.lang.reflect.Method.invoke(Method.java:568)
       ```
       将上述日志合并为一行的正则配置：\^\\d{2}:\\d{2}:\\d{2}。
       不是以时间开头的所有行合并到上一行。
       示例二：
       ```
       Exception in thread "main" java.lang.IllegalStateException: A book has a null property
              at com.example.myproject.Author.getBookIds(Author.java:38)
              at com.example.myproject.Bootstrap.main(Bootstrap.java:14)
       Caused by: java.lang.NullPointerException
              at com.example.myproject.Book.getId(Book.java:22)
              at com.example.myproject.Author.getBookIds(Author.java:35)
              ... 1 more
       ```
       将上述日志合并为一行的正则配置：\^Exception 。
       不是以Exception开头的所有行合并到上一行。
       页面提供正则式校验功能，将日志复制到"日志样例"栏，填写完成"正则模式"后，单击"校验"按钮，可验证填写的正则表达式是否匹配。
       
      
    
   
   
9. 单击"确定"。
10. 使配置生效。 
    - 如已完成组件部署，单击页面上方"生效配置"。在右侧弹框中确认配置信息，并单击"确定"，使配置生效。
    
    - 如未完成组件部署，单击页面上方"配置并部署组件"，在弹框中单击"确定"，待组件部署执行完成后，配置生效。 生效后可在组件日志页面内[查看指定路径组件日志](https://support.huaweicloud.com/usermanual-cae/cae_03_0010.html)。
      图1查看自定义路径下的日志   
      ![](https://support.huaweicloud.com/usermanual-cae/zh-cn_image_0000001540993617.png "点击放大") 
    
    
    
    
 
#### 修改自定义日志路径
1. [登录CAE控制台](https://console.huaweicloud.com/cae/)。
2. 在左侧导航栏中选择"组件配置"。
3. 在"组件配置"页面上方的下拉框中，选择待操作的组件。
4. 单击"日志采集"模块中的"编辑"。
5. 在右侧弹框中选择待修改路径，在"操作"列单击"编辑"。
6. 重新配置日志采集路径，例如：/var/log/CAE/logs/\*.out。
7. （可选）按需重新配置日志采集格式。
8. 单击"保存"后，单击"确定"。
9. 单击页面上方"生效配置"。在右侧弹框中确认变更信息，并单击"确定"，使配置生效。
10. 查看修改路径后的日志信息。 
    图2修改路径后的日志   
    ![](https://support.huaweicloud.com/usermanual-cae/zh-cn_image_0000001540754145.png "点击放大")
    
    
 
#### 删除自定义日志路径
1. [登录CAE控制台](https://console.huaweicloud.com/cae/)。
2. 在左侧导航栏中选择"组件配置"。
3. 在"组件配置"页面上方的下拉框中，选择待操作的组件。
4. 单击"日志采集"模块中的"编辑"。
5. 在右侧弹框中选择待删除路径，在"操作"列单击"删除"。
6. 在弹框内单击"是"。删除路径后，单击"确定"。
7. 单击页面上方"生效配置"。在右侧弹框中确认变更信息，并单击"确定"，使配置生效。 
   ![](https://support.huaweicloud.com/usermanual-cae/public_sys-resources/note_3.0-zh-cn.png)
   删除路径文件表示不再继续采集指定路径文件的日志，但仍可查看对应日志文件的历史日志信息。
   
   
 
