# 配置

除系统自带的日志菜单外,还可增加自定义的日志菜单。

# 配置文件

地址:根目录\yunj\config\log.php

默认配置参考:根目录\vendor\yunj\admincore-tp6\src\core\config\log.php

return [

    // 记录日志,默认记录
    // function类型,返回bool。true|其他 => 记录、false => 不记录
    'is_record' => null,

    // 分组
    // 配置参考:vendor/yunj/admincore-tp6/src/core/config/log.php
    // 配置/调整完成后需进入项目根目录执行命令:php think yunj:init-system-auths 重置系统权限(或进入权限管理页面执行列表右上角系统权限同步功能)
    'types' => [
        'all' => [
            // 菜单标题
            'title' => '....日志',
            // 菜单图标class
            'icon' => 'layui-icon-list',
            // 表格
            'table' => [
                // 固定查询条件
                'fixed_where' => function (array $filter) {
                    return [];
                },
            ]
        ]
    ]
];

# 记录日志

可根据自身业务判断当前请求日志是否记录。

如:接口/admin/test/index的请求日志不进行记录,则config\log.php配置如下:

return [

    // 记录日志,默认记录
    // function类型,返回bool。true|其他 => 记录、false => 不记录
    'is_record' => function () {
        return !strstr(request()->baseUrl(), '/admin/test/index');
    },
    ...
];

# 菜单配置

可根据自身业务需要配置单独的日志查询菜单。

配置key:当前日志菜单唯一标识

配置属性

属性 类型 是否必须 说明
title string 日志菜单标题
icon string 菜单图标class
table array 表格配置

示例

配置 侧边栏 权限

注意!配置文件调整后需要重新运行命令:php think yunj:init-system-auths进行菜单初始化

# 菜单列表表格配置

属性 类型 是否必须 说明
fixed_where function 固定查询条件。解释如下

可根据自身业务需要配置固定的数据查询条件。

如:只匹配DEMO用户相关的请求日志记录

use yunj\app\admin\enum\State;
use yunj\app\admin\model\AdminRouteRequest;
use yunj\app\admin\service\route\RouteService;

return [
    'types' => [
        'demo_user' => [
            'title' => 'DEMO用户日志',
            'icon' => 'layui-icon-list',
            // 表格
            'table' => [
                // 固定查询条件
                'fixed_where' => function (array $filter) {
                    // 获取DEMO用户相关的请求项ids
                    $routes = RouteService::getValidRoutes();
                    $routeDatas = [];
                    foreach ($routes as $route) {
                        if (strstr($route['base_url'],'demo/user') || strstr($route['base_url'],'demo/all-user')) {
                            $routeDatas[$route['id']] = $route;
                        }
                    }
                    $requests = app(AdminRouteRequest::class)->getOwnRowsToArray([
                        ['route_id', 'in', array_keys($routeDatas)],
                        ['state', '=', State::NORMAL],
                    ]);
                    $requestIds = array_column($requests, 'id');
                    // 返回匹配的请求项ids的where条件数组
                    return [['request_id', 'in', $requestIds]];
                },
            ]
        ],
    ]

];

# 配置生效

为了使新配制的日志管理生效,

需进入项目根目录执行命令:php think yunj:init-system-auths 重置系统权限;

或进入权限管理页面执行列表右上角系统权限同步功能。