系统内置了操作审计日志、权限拒绝日志、数据权限异常日志和配置健康检查日志,并提供统一的日志输出控制能力。
| 日志通道 | 配置组 | 触发时机 | 日志级别 |
|---|---|---|---|
admin.operation.audit |
audit |
表单保存/更新/删除操作 | info |
admin.permission.denied |
permission_denied |
权限中间件拒绝访问 | warning |
admin.data_permission.rule_anomaly |
data_permission |
数据权限规则异常(条件不合法、字段为空等) | warning |
admin.config.health |
config_health |
菜单/权限管理页面保存时检测到配置问题 | warning |
每条日志都会自动附带 trace_id,便于在分布式环境下串联同一请求的所有日志。
- 请求头
X-Request-Id - 请求头
X-Trace-Id - 请求属性
_admin_trace_id(自动生成 UUID)
在 config/admin.php 中通过 log_control 统一控制各组日志的输出行为:
'log_control' => [
'audit' => [
'sample_rate' => 1.0, // 采样率,0~1,1 表示全部记录
'only_paths' => [], // 仅这些路径才记录,空数组表示不限制
'except_paths' => [], // 排除这些路径
],
'permission_denied' => [
'sample_rate' => 1.0,
'only_paths' => [],
'except_paths' => [],
],
'data_permission' => [
'sample_rate' => 1.0,
'only_paths' => [],
'except_paths' => [],
],
'config_health' => [
'sample_rate' => 1.0,
'only_paths' => [],
'except_paths' => [],
],
],| 配置项 | 类型 | 说明 |
|---|---|---|
sample_rate |
float |
采样率,0 关闭日志,1 全量记录,0.1 表示 10% 请求会记录 |
only_paths |
array |
白名单路径模式,支持 * 通配符,如 ['auth/*', 'users'] |
except_paths |
array |
黑名单路径模式,支持 * 通配符 |
- 使用
Str::is()进行通配符匹配 only_paths和except_paths均为空时,所有路径都记录only_paths非空时,仅匹配的路径才记录except_paths非空时,匹配的路径被排除- 两者同时配置时,先过
only_paths,再过except_paths
当 sample_rate 介于 0 到 1 之间时,系统使用基于 trace_id 的确定性采样:
- 同一请求(相同
trace_id)的同一日志组,采样结果一致 - 不同请求之间的采样相互独立
- 无
trace_id时退化为随机采样
'log_control' => [
'audit' => [
'sample_rate' => 0.1,
],
],'log_control' => [
'permission_denied' => [
'sample_rate' => 1.0,
'only_paths' => ['auth/*', 'api/*'],
],
],'log_control' => [
'config_health' => [
'sample_rate' => 1.0,
'except_paths' => ['auth/menu/test*'],
],
],'log_control' => [
'data_permission' => [
'sample_rate' => 0,
],
],