配置日志采集
CAE提供了日志采集的功能,当前只支持日志采集到LTS,可以配置日志采集路径,高级设置可配置单行日志或者多行合并为一行,默认为单行日志。
- 如果日志文件挂载到系统目录,如“/”、“/var/run”等,会导致组件异常。建议挂载在空目录下,若目录不为空,请确保目录下无影响组件启动的文件,否则文件会被替换,导致组件启动异常,组件创建失败。
- 填写日志路径时,路径中需要包含日志的文件名,例如:/var/log/test/error.log;支持“*.后缀名”格式,例如: /var/log/test/*.log;不支持直接以通配符表示,例如:/var/log/test/*,/var/log/test/*.*。
- 采集的日志文件须为文本类型文件。
- 所有组件会默认采集标准输出的日志,并放入stdout文件中。
- 日志路径与云存储配置路径不能重复。
- CAE里一个应用对应LTS里一个日志组,CAE在创建应用时候创建日志组。
新增日志采集
最多支持配置 20 条日志采集路径。
- 登录CAE控制台。
- 在左侧导航栏中选择“组件配置”。
- 在“组件配置”页面上方的下拉框中,选择待操作的组件。
- 单击“日志采集”模块中的“编辑”。
- 在右侧弹框中单击“新增日志路径”。
- 在“日志采集路径”下填入需要采集日志的路径。例如:/var/log/springboot.log。
图1 配置自定义日志路径
- 单击“保存”。
- 设置高级设置。
系统默认按行采集显示程序打印的日志。在程序打印日志存在一条完整日志跨占多行的情况下,如果需要采集显示整条日志,您可以设置“日志格式”,开启多行日志。
- 单行日志:系统默认按行采集日志。
- 多行日志:多行合并为一行,系统按设置的匹配规则采集日志,不满足匹配规则的日志行会与上一次满足匹配规则的日志行合并为一行。
- 选择“日志时间”表示采用时间匹配方式。
时间通配符:“分行模式”选择“日志时间”时,请输入时间通配符。
例如日志中每条日志发生的时间格式是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开头的所有行合并到上一行。
页面提供正则式校验功能,将日志复制到“日志样例”栏,填写完成“正则模式”后,单击“校验”按钮,可验证填写的正则表达式是否匹配。
- 选择“日志时间”表示采用时间匹配方式。
- 单击“确定”。
- 使配置生效。
- 如已完成组件部署,单击页面上方“生效配置”。在右侧弹框中确认配置信息,并单击“确定”,使配置生效。
- 如未完成组件部署,单击页面上方“配置并部署组件”,在弹框中单击“确定”,待组件部署执行完成后,配置生效。
生效后可在组件日志页面内查看指定路径组件日志。
图2 查看自定义路径下的日志
修改自定义日志路径
- 登录CAE控制台。
- 在左侧导航栏中选择“组件配置”。
- 在“组件配置”页面上方的下拉框中,选择待操作的组件。
- 单击“日志采集”模块中的“编辑”。
- 在右侧弹框中选择待修改路径,在“操作”列单击“编辑”。
- 重新配置日志采集路径,例如:/var/log/CAE/logs/*.out。
图3 修改自定义日志路径
- (可选)按需重新配置日志采集格式。
- 单击“保存”后,单击“确定”。
- 单击页面上方“生效配置”。在右侧弹框中确认变更信息,并单击“确定”,使配置生效。
- 查看修改路径后的日志信息。
图4 修改路径后的日志
删除自定义日志路径
- 登录CAE控制台。
- 在左侧导航栏中选择“组件配置”。
- 在“组件配置”页面上方的下拉框中,选择待操作的组件。
- 单击“日志采集”模块中的“编辑”。
- 在右侧弹框中选择待删除路径,在“操作”列单击“删除”。
- 在弹框内单击“是”。删除路径后,单击“确定”。
图5 删除自定义日志路径
- 单击页面上方“生效配置”。在右侧弹框中确认变更信息,并单击“确定”,使配置生效。
删除路径文件表示不再继续采集指定路径文件的日志,但仍可查看对应日志文件的历史日志信息。