fase()尝试elk
parent
596dd3544f
commit
eb686da73e
|
@ -136,6 +136,12 @@
|
|||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.logstash.logback</groupId>
|
||||
<artifactId>logstash-logback-encoder</artifactId>
|
||||
<version>7.3</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
|
|
@ -78,6 +78,22 @@
|
|||
<artifactId>muyu-common-swagger</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-logging</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!--集成logstash-->
|
||||
<dependency>
|
||||
<groupId>net.logstash.logback</groupId>
|
||||
<artifactId>logstash-logback-encoder</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
package com.muyu.system.DCL;
|
||||
|
||||
import org.slf4j.MDC;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class MDCTraceUtil {
|
||||
/**
|
||||
* 追踪id的名称
|
||||
*/
|
||||
public static final String KEY_TRACE_ID = "traceId";
|
||||
|
||||
/**
|
||||
* 日志链路追踪id信息头
|
||||
*/
|
||||
public static final String TRACE_ID_HEADER = "x-traceId-header";
|
||||
|
||||
|
||||
/**
|
||||
* 创建traceId并赋值MDC
|
||||
*/
|
||||
public static void addTrace() {
|
||||
String traceId = createTraceId();
|
||||
// MDC(Mapped Diagnostic Context)诊断上下文映射,是@Slf4j提供的一个支持动态打印日志信息的工具。
|
||||
MDC.put(KEY_TRACE_ID, traceId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 赋值MDC
|
||||
*/
|
||||
public static void putTrace(String traceId) {
|
||||
MDC.put(KEY_TRACE_ID, traceId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取MDC中的traceId值
|
||||
*/
|
||||
public static String getTraceId() {
|
||||
return MDC.get(KEY_TRACE_ID);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除MDC的值
|
||||
*/
|
||||
public static void removeTrace() {
|
||||
MDC.remove(KEY_TRACE_ID);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建traceId
|
||||
*/
|
||||
public static String createTraceId() {
|
||||
return UUID.randomUUID().toString().replace("-", "");
|
||||
}
|
||||
|
||||
}
|
|
@ -5,6 +5,7 @@ import com.muyu.common.security.annotation.EnableMyFeignClients;
|
|||
import com.muyu.common.swagger.annotation.EnableCustomSwagger2;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 系统模块
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
package com.muyu.system.config;
|
||||
|
||||
import com.muyu.system.interceptor.LogInterceptor;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
|
||||
@Configuration
|
||||
public class LogWebMvcConfig implements WebMvcConfigurer {
|
||||
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
// 添加拦截器
|
||||
registry.addInterceptor(mvcInterceptor())
|
||||
// 拦截所有请求的路径
|
||||
.addPathPatterns("/**");
|
||||
}
|
||||
|
||||
@Bean
|
||||
public LogInterceptor mvcInterceptor() {
|
||||
return new LogInterceptor();
|
||||
}
|
||||
|
||||
}
|
|
@ -50,7 +50,6 @@ public class AccreditController extends BaseController {
|
|||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/tableNameList2")
|
||||
public Result<List<String>> tableNameList2() throws SQLException {
|
||||
List<String> list = service.tableNameList2();
|
||||
return Result.success(list);
|
||||
|
@ -62,7 +61,6 @@ public class AccreditController extends BaseController {
|
|||
* @return
|
||||
* @throws SQLException
|
||||
*/
|
||||
@GetMapping("/listSqlJdbc")
|
||||
public Result listSqlJdbc(@RequestBody Connection connection, String tableName) throws SQLException {
|
||||
return service.listSqlJdbc(connection, tableName);
|
||||
}
|
||||
|
@ -111,7 +109,6 @@ public class AccreditController extends BaseController {
|
|||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/listDeptVo")
|
||||
public Result list() {
|
||||
List<DeptVO> depts = deptService.selectDeptListVo();
|
||||
return success(depts);
|
||||
|
@ -122,7 +119,6 @@ public class AccreditController extends BaseController {
|
|||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/listSelectSysUser")
|
||||
public Result<List<SysUserVo>> listSelectSysUser() {
|
||||
List<SysUserVo> list = userService.listSelectSysUser();
|
||||
return success(list);
|
||||
|
|
|
@ -33,7 +33,6 @@ public class AssetModelController extends BaseController {
|
|||
* 查询资产详情列表
|
||||
*/
|
||||
@RequiresPermissions("system:model:list")
|
||||
@GetMapping("/list")
|
||||
public Result<TableDataInfo<AssetModel>> list(AssetModel assetModel) {
|
||||
startPage();
|
||||
List<AssetModel> list = assetModelService.selectAssetModelList(assetModel);
|
||||
|
@ -56,7 +55,6 @@ public class AssetModelController extends BaseController {
|
|||
* 获取资产详情详细信息
|
||||
*/
|
||||
@RequiresPermissions("system:model:query")
|
||||
@GetMapping(value = "/{annotation}")
|
||||
public Result getInfo(@PathVariable("annotation") String annotation) {
|
||||
return success(assetModelService.selectAssetModelByAnnotation(annotation));
|
||||
}
|
||||
|
@ -96,7 +94,6 @@ public class AssetModelController extends BaseController {
|
|||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("library")
|
||||
public Result<List<Library>> library() {
|
||||
List<Library> list = assetModelService.library();
|
||||
return Result.success(list);
|
||||
|
@ -108,7 +105,6 @@ public class AssetModelController extends BaseController {
|
|||
* @param libraryName
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("selectTable/{libraryName}")
|
||||
public Result<List<TableVo>> selectTable(@PathVariable String libraryName) {
|
||||
List<TableVo> list = assetModelService.selectTable(libraryName);
|
||||
return Result.success(list);
|
||||
|
|
|
@ -32,7 +32,6 @@ public class DataAccessController extends BaseController {
|
|||
* 查询数据接入列表
|
||||
*/
|
||||
@RequiresPermissions("system:access:list")
|
||||
@GetMapping("/list")
|
||||
public Result<TableDataInfo<DataAccess>> list(DataAccess dataAccess) {
|
||||
startPage();
|
||||
List<DataAccess> list = dataAccessService.selectDataAccessList(dataAccess);
|
||||
|
@ -60,7 +59,6 @@ public class DataAccessController extends BaseController {
|
|||
* 获取数据接入详细信息
|
||||
*/
|
||||
@RequiresPermissions("system:access:query")
|
||||
@GetMapping(value = "/{id}")
|
||||
public Result getInfo(@PathVariable("id") Long id) {
|
||||
return success(dataAccessService.selectDataAccessById(id));
|
||||
}
|
||||
|
|
|
@ -34,7 +34,6 @@ public class SysConfigController extends BaseController {
|
|||
* 获取参数配置列表
|
||||
*/
|
||||
@RequiresPermissions("system:config:list")
|
||||
@GetMapping("/list")
|
||||
public Result<TableDataInfo<SysConfig>> list(SysConfig config) {
|
||||
startPage();
|
||||
List<SysConfig> list = configService.pageQuery(config);
|
||||
|
@ -53,7 +52,6 @@ public class SysConfigController extends BaseController {
|
|||
/**
|
||||
* 根据参数编号获取详细信息
|
||||
*/
|
||||
@GetMapping(value = "/{configId}")
|
||||
public Result getInfo(@PathVariable Long configId) {
|
||||
return success(configService.getById(configId));
|
||||
}
|
||||
|
@ -61,7 +59,6 @@ public class SysConfigController extends BaseController {
|
|||
/**
|
||||
* 根据参数键名查询参数值
|
||||
*/
|
||||
@GetMapping(value = "/configKey/{configKey}")
|
||||
public Result getConfigKey(@PathVariable String configKey) {
|
||||
return success(configService.selectConfigByKey(configKey));
|
||||
}
|
||||
|
|
|
@ -33,7 +33,6 @@ public class SysDeptController extends BaseController {
|
|||
* 获取部门列表
|
||||
*/
|
||||
@RequiresPermissions("system:dept:list")
|
||||
@GetMapping("/list")
|
||||
public Result list(SysDept dept) {
|
||||
List<SysDept> depts = deptService.selectDeptList(dept);
|
||||
return success(depts);
|
||||
|
@ -43,7 +42,6 @@ public class SysDeptController extends BaseController {
|
|||
* 查询部门列表(排除节点)
|
||||
*/
|
||||
@RequiresPermissions("system:dept:list")
|
||||
@GetMapping("/list/exclude/{deptId}")
|
||||
public Result excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) {
|
||||
List<SysDept> depts = deptService.selectDeptList(new SysDept());
|
||||
depts.removeIf(d -> d.getDeptId().intValue() == deptId || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + ""));
|
||||
|
@ -54,7 +52,6 @@ public class SysDeptController extends BaseController {
|
|||
* 根据部门编号获取详细信息
|
||||
*/
|
||||
@RequiresPermissions("system:dept:query")
|
||||
@GetMapping(value = "/{deptId}")
|
||||
public Result getInfo(@PathVariable Long deptId) {
|
||||
deptService.checkDeptDataScope(deptId);
|
||||
return success(deptService.selectDeptById(deptId));
|
||||
|
|
|
@ -35,7 +35,6 @@ public class SysDictDataController extends BaseController {
|
|||
private SysDictTypeService dictTypeService;
|
||||
|
||||
@RequiresPermissions("system:dict:list")
|
||||
@GetMapping("/list")
|
||||
public Result<TableDataInfo<SysDictData>> list(SysDictData dictData) {
|
||||
startPage();
|
||||
List<SysDictData> list = dictDataService.selectDictDataList(dictData);
|
||||
|
@ -55,7 +54,6 @@ public class SysDictDataController extends BaseController {
|
|||
* 查询字典数据详细
|
||||
*/
|
||||
@RequiresPermissions("system:dict:query")
|
||||
@GetMapping(value = "/{dictCode}")
|
||||
public Result getInfo(@PathVariable Long dictCode) {
|
||||
return success(dictDataService.selectDictDataById(dictCode));
|
||||
}
|
||||
|
@ -63,7 +61,6 @@ public class SysDictDataController extends BaseController {
|
|||
/**
|
||||
* 根据字典类型查询字典数据信息
|
||||
*/
|
||||
@GetMapping(value = "/type/{dictType}")
|
||||
public Result dictType(@PathVariable String dictType) {
|
||||
List<SysDictData> data = dictTypeService.selectDictDataByType(dictType);
|
||||
if (StringUtils.isNull(data)) {
|
||||
|
|
|
@ -29,7 +29,6 @@ public class SysDictTypeController extends BaseController {
|
|||
private SysDictTypeService dictTypeService;
|
||||
|
||||
@RequiresPermissions("system:dict:list")
|
||||
@GetMapping("/list")
|
||||
public Result<TableDataInfo<SysDictType>> list(SysDictType dictType) {
|
||||
startPage();
|
||||
List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
|
||||
|
@ -49,7 +48,6 @@ public class SysDictTypeController extends BaseController {
|
|||
* 查询字典类型详细
|
||||
*/
|
||||
@RequiresPermissions("system:dict:query")
|
||||
@GetMapping(value = "/{dictId}")
|
||||
public Result getInfo(@PathVariable Long dictId) {
|
||||
return success(dictTypeService.selectDictTypeById(dictId));
|
||||
}
|
||||
|
@ -107,7 +105,6 @@ public class SysDictTypeController extends BaseController {
|
|||
/**
|
||||
* 获取字典选择框列表
|
||||
*/
|
||||
@GetMapping("/optionselect")
|
||||
public Result optionselect() {
|
||||
List<SysDictType> dictTypes = dictTypeService.selectDictTypeAll();
|
||||
return success(dictTypes);
|
||||
|
|
|
@ -33,7 +33,6 @@ public class SysLogininforController extends BaseController {
|
|||
private RedisService redisService;
|
||||
|
||||
@RequiresPermissions("system:logininfor:list")
|
||||
@GetMapping("/list")
|
||||
public Result<TableDataInfo<SysLogininfor>> list(SysLogininfor logininfor) {
|
||||
startPage();
|
||||
List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
|
||||
|
@ -66,7 +65,6 @@ public class SysLogininforController extends BaseController {
|
|||
|
||||
@RequiresPermissions("system:logininfor:unlock")
|
||||
@Log(title = "账户解锁", businessType = BusinessType.OTHER)
|
||||
@GetMapping("/unlock/{userName}")
|
||||
public Result unlock(@PathVariable("userName") String userName) {
|
||||
redisService.deleteObject(CacheConstants.PWD_ERR_CNT_KEY + userName);
|
||||
return success();
|
||||
|
|
|
@ -32,7 +32,6 @@ public class SysMenuController extends BaseController {
|
|||
* 获取菜单列表
|
||||
*/
|
||||
@RequiresPermissions("system:menu:list")
|
||||
@GetMapping("/list")
|
||||
public Result list(SysMenu menu) {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
List<SysMenu> menus = menuService.selectMenuList(menu, userId);
|
||||
|
@ -43,7 +42,6 @@ public class SysMenuController extends BaseController {
|
|||
* 根据菜单编号获取详细信息
|
||||
*/
|
||||
@RequiresPermissions("system:menu:query")
|
||||
@GetMapping(value = "/{menuId}")
|
||||
public Result getInfo(@PathVariable Long menuId) {
|
||||
return success(menuService.selectMenuById(menuId));
|
||||
}
|
||||
|
@ -51,7 +49,6 @@ public class SysMenuController extends BaseController {
|
|||
/**
|
||||
* 获取菜单下拉树列表
|
||||
*/
|
||||
@GetMapping("/treeselect")
|
||||
public Result treeselect(SysMenu menu) {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
List<SysMenu> menus = menuService.selectMenuList(menu, userId);
|
||||
|
@ -61,7 +58,6 @@ public class SysMenuController extends BaseController {
|
|||
/**
|
||||
* 加载对应角色菜单列表树
|
||||
*/
|
||||
@GetMapping(value = "/roleMenuTreeselect/{roleId}")
|
||||
public Result roleMenuTreeselect(@PathVariable("roleId") Long roleId) {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
List<SysMenu> menus = menuService.selectMenuList(userId);
|
||||
|
@ -128,7 +124,6 @@ public class SysMenuController extends BaseController {
|
|||
*
|
||||
* @return 路由信息
|
||||
*/
|
||||
@GetMapping("getRouters")
|
||||
public Result getRouters() {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
|
||||
|
|
|
@ -30,7 +30,6 @@ public class SysNoticeController extends BaseController {
|
|||
* 获取通知公告列表
|
||||
*/
|
||||
@RequiresPermissions("system:notice:list")
|
||||
@GetMapping("/list")
|
||||
public Result<TableDataInfo<SysNotice>> list(SysNotice notice) {
|
||||
startPage();
|
||||
List<SysNotice> list = noticeService.selectNoticeList(notice);
|
||||
|
@ -41,7 +40,6 @@ public class SysNoticeController extends BaseController {
|
|||
* 根据通知公告编号获取详细信息
|
||||
*/
|
||||
@RequiresPermissions("system:notice:query")
|
||||
@GetMapping(value = "/{noticeId}")
|
||||
public Result getInfo(@PathVariable Long noticeId) {
|
||||
return success(noticeService.selectNoticeById(noticeId));
|
||||
}
|
||||
|
|
|
@ -28,7 +28,6 @@ public class SysOperlogController extends BaseController {
|
|||
private SysOperLogService operLogService;
|
||||
|
||||
@RequiresPermissions("system:operlog:list")
|
||||
@GetMapping("/list")
|
||||
public Result<TableDataInfo<SysOperLog>> list(SysOperLog operLog) {
|
||||
startPage();
|
||||
List<SysOperLog> list = operLogService.selectOperLogList(operLog);
|
||||
|
|
|
@ -32,7 +32,6 @@ public class SysPostController extends BaseController {
|
|||
* 获取岗位列表
|
||||
*/
|
||||
@RequiresPermissions("system:post:list")
|
||||
@GetMapping("/list")
|
||||
public Result<TableDataInfo<SysPost>> list(SysPost post) {
|
||||
startPage();
|
||||
List<SysPost> list = postService.selectPostList(post);
|
||||
|
@ -52,7 +51,6 @@ public class SysPostController extends BaseController {
|
|||
* 根据岗位编号获取详细信息
|
||||
*/
|
||||
@RequiresPermissions("system:post:query")
|
||||
@GetMapping(value = "/{postId}")
|
||||
public Result getInfo(@PathVariable Long postId) {
|
||||
return success(postService.selectPostById(postId));
|
||||
}
|
||||
|
@ -102,7 +100,6 @@ public class SysPostController extends BaseController {
|
|||
/**
|
||||
* 获取岗位选择框列表
|
||||
*/
|
||||
@GetMapping("/optionselect")
|
||||
public Result optionselect() {
|
||||
List<SysPost> posts = postService.selectPostAll();
|
||||
return success(posts);
|
||||
|
|
|
@ -41,7 +41,6 @@ public class SysProfileController extends BaseController {
|
|||
/**
|
||||
* 个人信息
|
||||
*/
|
||||
@GetMapping
|
||||
public Result profile() {
|
||||
String username = SecurityUtils.getUsername();
|
||||
SysUser user = userService.selectUserByUserName(username);
|
||||
|
|
|
@ -41,7 +41,6 @@ public class SysRoleController extends BaseController {
|
|||
private SysDeptService deptService;
|
||||
|
||||
@RequiresPermissions("system:role:list")
|
||||
@GetMapping("/list")
|
||||
public Result<TableDataInfo<SysRole>> list(SysRole role) {
|
||||
startPage();
|
||||
List<SysRole> list = roleService.selectRoleList(role);
|
||||
|
@ -61,7 +60,6 @@ public class SysRoleController extends BaseController {
|
|||
* 根据角色编号获取详细信息
|
||||
*/
|
||||
@RequiresPermissions("system:role:query")
|
||||
@GetMapping(value = "/{roleId}")
|
||||
public Result getInfo(@PathVariable Long roleId) {
|
||||
roleService.checkRoleDataScope(roleId);
|
||||
return success(roleService.selectRoleById(roleId));
|
||||
|
@ -141,7 +139,6 @@ public class SysRoleController extends BaseController {
|
|||
* 获取角色选择框列表
|
||||
*/
|
||||
@RequiresPermissions("system:role:query")
|
||||
@GetMapping("/optionselect")
|
||||
public Result optionselect() {
|
||||
return success(roleService.selectRoleAll());
|
||||
}
|
||||
|
@ -150,7 +147,6 @@ public class SysRoleController extends BaseController {
|
|||
* 查询已分配用户角色列表
|
||||
*/
|
||||
@RequiresPermissions("system:role:list")
|
||||
@GetMapping("/authUser/allocatedList")
|
||||
public Result<TableDataInfo<SysUser>> allocatedList(SysUser user) {
|
||||
startPage();
|
||||
List<SysUser> list = userService.selectAllocatedList(user);
|
||||
|
@ -161,7 +157,6 @@ public class SysRoleController extends BaseController {
|
|||
* 查询未分配用户角色列表
|
||||
*/
|
||||
@RequiresPermissions("system:role:list")
|
||||
@GetMapping("/authUser/unallocatedList")
|
||||
public Result<TableDataInfo<SysUser>> unallocatedList(SysUser user) {
|
||||
startPage();
|
||||
List<SysUser> list = userService.selectUnallocatedList(user);
|
||||
|
@ -203,7 +198,6 @@ public class SysRoleController extends BaseController {
|
|||
* 获取对应角色部门树列表
|
||||
*/
|
||||
@RequiresPermissions("system:role:query")
|
||||
@GetMapping(value = "/deptTree/{roleId}")
|
||||
public Result deptTree(@PathVariable("roleId") Long roleId) {
|
||||
return Result.success(
|
||||
DeptTreeResp.builder()
|
||||
|
|
|
@ -60,7 +60,6 @@ public class SysUserController extends BaseController {
|
|||
* 获取用户列表
|
||||
*/
|
||||
@RequiresPermissions("system:user:list")
|
||||
@GetMapping("/list")
|
||||
public Result<TableDataInfo<SysUser>> list(SysUser user) {
|
||||
startPage();
|
||||
List<SysUser> list = userService.selectUserList(user);
|
||||
|
@ -97,7 +96,6 @@ public class SysUserController extends BaseController {
|
|||
* 获取当前用户信息
|
||||
*/
|
||||
@InnerAuth
|
||||
@GetMapping("/info/{username}")
|
||||
public Result<LoginUser> info(@PathVariable("username") String username) {
|
||||
SysUser sysUser = userService.selectUserByUserName(username);
|
||||
if (StringUtils.isNull(sysUser)) {
|
||||
|
@ -135,7 +133,6 @@ public class SysUserController extends BaseController {
|
|||
*
|
||||
* @return 用户信息
|
||||
*/
|
||||
@GetMapping("getInfo")
|
||||
public Result getInfo() {
|
||||
SysUser user = userService.selectUserById(SecurityUtils.getUserId());
|
||||
// 角色集合
|
||||
|
@ -156,7 +153,6 @@ public class SysUserController extends BaseController {
|
|||
* 根据用户编号获取详细信息
|
||||
*/
|
||||
@RequiresPermissions("system:user:query")
|
||||
@GetMapping(value = {"/", "/{userId}"})
|
||||
public Result getInfo(@PathVariable(value = "userId", required = false) Long userId) {
|
||||
userService.checkUserDataScope(userId);
|
||||
UserDetailInfoResp.UserDetailInfoRespBuilder<?, ?> builder = UserDetailInfoResp.builder();
|
||||
|
@ -258,7 +254,6 @@ public class SysUserController extends BaseController {
|
|||
* 根据用户编号获取授权角色
|
||||
*/
|
||||
@RequiresPermissions("system:user:query")
|
||||
@GetMapping("/authRole/{userId}")
|
||||
public Result authRole(@PathVariable("userId") Long userId) {
|
||||
SysUser user = userService.selectUserById(userId);
|
||||
List<SysRole> roles = roleService.selectRolesByUserId(userId);
|
||||
|
@ -286,7 +281,6 @@ public class SysUserController extends BaseController {
|
|||
* 获取部门树列表
|
||||
*/
|
||||
@RequiresPermissions("system:user:list")
|
||||
@GetMapping("/deptTree")
|
||||
public Result deptTree(SysDept dept) {
|
||||
return success(deptService.selectDeptTreeList(dept));
|
||||
}
|
||||
|
|
|
@ -35,7 +35,6 @@ public class SysUserOnlineController extends BaseController {
|
|||
private RedisService redisService;
|
||||
|
||||
@RequiresPermissions("monitor:online:list")
|
||||
@GetMapping("/list")
|
||||
public Result<TableDataInfo<SysUserOnline>> list(String ipaddr, String userName) {
|
||||
Collection<String> keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
|
||||
List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
package com.muyu.system.controller;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
|
||||
@RestController
|
||||
public class TestLogController {
|
||||
/**
|
||||
* 获取日志输出对象
|
||||
*/
|
||||
private static final Logger log = LoggerFactory.getLogger(TestLogController.class);
|
||||
|
||||
/**
|
||||
* 测试输出log的访问方法
|
||||
*/
|
||||
@GetMapping("/testLog")
|
||||
public String testLog() {
|
||||
log.error("测试输出一个日志");
|
||||
return "success";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package com.muyu.system.interceptor;
|
||||
|
||||
import com.alibaba.druid.util.StringUtils;
|
||||
import com.muyu.system.DCL.MDCTraceUtil;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
public class LogInterceptor implements HandlerInterceptor {
|
||||
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||||
// 客户端可以传入链路ID,需要唯一性
|
||||
String traceId = request.getHeader(MDCTraceUtil.TRACE_ID_HEADER);
|
||||
if (!StringUtils.isEmpty(traceId)) {
|
||||
MDCTraceUtil.putTrace(request.getHeader(MDCTraceUtil.TRACE_ID_HEADER));
|
||||
} else {
|
||||
MDCTraceUtil.addTrace();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
|
||||
MDCTraceUtil.removeTrace();
|
||||
}
|
||||
}
|
|
@ -26,3 +26,4 @@ spring:
|
|||
logging:
|
||||
level:
|
||||
com.muyu.system.mapper: DEBUG
|
||||
config: classpath:logback-spring.xml
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--该日志将日志级别不同的log信息保存到不同的文件中 -->
|
||||
<configuration>
|
||||
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
|
||||
|
||||
<springProperty scope="context" name="springAppName"
|
||||
source="spring.application.name" />
|
||||
|
||||
<!-- 日志在工程中的输出位置 -->
|
||||
<property name="LOG_FILE" value="${BUILD_FOLDER:-build}/${springAppName}" />
|
||||
|
||||
<!-- 控制台的日志输出样式 -->
|
||||
<property name="CONSOLE_LOG_PATTERN"
|
||||
value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
|
||||
|
||||
<!-- 控制台输出 -->
|
||||
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<level>INFO</level>
|
||||
</filter>
|
||||
<!-- 日志输出编码 -->
|
||||
<encoder>
|
||||
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
||||
<charset>utf8</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- 为logstash输出的JSON格式的Appender -->
|
||||
<appender name="logstash"
|
||||
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
|
||||
<destination>ip:4561</destination>
|
||||
<!-- 日志输出编码 -->
|
||||
<encoder
|
||||
class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
|
||||
<providers>
|
||||
<timestamp>
|
||||
<timeZone>UTC</timeZone>
|
||||
</timestamp>
|
||||
<pattern>
|
||||
<pattern>
|
||||
{
|
||||
"severity": "%level",
|
||||
"service": "${springAppName:-}",
|
||||
"trace": "%X{X-B3-TraceId:-}",
|
||||
"span": "%X{X-B3-SpanId:-}",
|
||||
"exportable": "%X{X-Span-Export:-}",
|
||||
"pid": "${PID:-}",
|
||||
"thread": "%thread",
|
||||
"class": "%logger{40}",
|
||||
"rest": "%message"
|
||||
}
|
||||
</pattern>
|
||||
</pattern>
|
||||
</providers>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- 日志输出级别 -->
|
||||
<root level="INFO">
|
||||
<appender-ref ref="console" />
|
||||
<appender-ref ref="logstash" />
|
||||
</root>
|
||||
|
||||
</configuration>
|
Loading…
Reference in New Issue