【log】整理log模块,文件日志读取管理问题修改

pull/3/head
liuhanqing 2020-12-20 20:42:32 +08:00 committed by fengshuonan
parent 6de9145036
commit ce2510192b
6 changed files with 115 additions and 25 deletions

View File

@ -28,4 +28,14 @@ public interface LogConstants {
*/
String LOG_DEFAULT_APP_NAME = "none-app-name";
/**
*
*/
Integer DEFAULT_BEGIN_PAGE_NO = 1;
/**
*
*/
Integer DEFAULT_PAGE_SIZE = 10;
}

View File

@ -0,0 +1,30 @@
package cn.stylefeng.roses.kernel.log.api.enums;
import lombok.Getter;
/**
*
*
* @author fengshuonan
* @date 2020/12/24 14:08
*/
@Getter
public enum LogSaveTypeEnum {
/**
*
*/
DB("db"),
/**
*
*/
FILE("file");
LogSaveTypeEnum(String code) {
this.code = code;
}
private final String code;
}

View File

@ -15,7 +15,6 @@ import cn.stylefeng.roses.kernel.log.db.service.SysLogService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@ -28,7 +27,6 @@ import java.util.List;
* @date 2020/11/2 17:40
*/
@Slf4j
@Service
public class DbLogManagerServiceImpl implements LogManagerApi {
/**
@ -167,14 +165,15 @@ public class DbLogManagerServiceImpl implements LogManagerApi {
* @date 2020/11/3 11:20
*/
private void createDefaultLogManagerParam(LogManagerParam logManagerParam) {
// 默认从第一页开始
if (logManagerParam.getPageNo() == null) {
logManagerParam.setPageNo(1);
logManagerParam.setPageNo(DEFAULT_BEGIN_PAGE_NO);
}
// 默认每页10条
if (logManagerParam.getPageSize() == null) {
logManagerParam.setPageSize(10);
logManagerParam.setPageSize(DEFAULT_PAGE_SIZE);
}
// 开始时间为空则用当天时间开始时间

View File

@ -3,13 +3,13 @@ package cn.stylefeng.roses.kernel.log.file;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.log.api.LogManagerApi;
import cn.stylefeng.roses.kernel.log.api.exception.LogException;
import cn.stylefeng.roses.kernel.log.api.pojo.manage.LogManagerParam;
import cn.stylefeng.roses.kernel.log.api.pojo.record.LogRecordDTO;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import java.io.File;
@ -21,6 +21,8 @@ import java.util.Calendar;
import java.util.Date;
import java.util.List;
import static cn.stylefeng.roses.kernel.log.api.constants.LogConstants.DEFAULT_BEGIN_PAGE_NO;
import static cn.stylefeng.roses.kernel.log.api.constants.LogConstants.DEFAULT_PAGE_SIZE;
import static cn.stylefeng.roses.kernel.log.api.constants.LogFileConstants.FILE_CONTRACT_SYMBOL;
import static cn.stylefeng.roses.kernel.log.api.constants.LogFileConstants.FILE_SUFFIX;
import static cn.stylefeng.roses.kernel.log.api.exception.enums.LogExceptionEnum.*;
@ -70,14 +72,20 @@ public class FileLogManagerServiceImpl implements LogManagerApi {
// 文件当前指针
long filePointer = 0L;
// 如果页数不等于1,则根据当前登陆用户信息取出上次读取文件的位置
if (!logManagerParam.getPageNo().equals(1)) {
Object pointer = LoginContext.me().getLoginUser().getOtherInfos().get("filePointer");
if (ObjectUtil.isNotEmpty(pointer)) {
filePointer = (long) pointer;
if (logManagerParam.getPageNo() == null) {
logManagerParam.setPageNo(DEFAULT_BEGIN_PAGE_NO);
} else {
// 如果页数不等于1,则根据当前登陆用户信息取出上次读取文件的位置
if (!DEFAULT_BEGIN_PAGE_NO.equals(logManagerParam.getPageNo())) {
Object pointer = LoginContext.me().getLoginUser().getOtherInfos().get("filePointer");
if (ObjectUtil.isNotEmpty(pointer)) {
filePointer = (long) pointer;
}
}
}
if (logManagerParam.getPageSize() == null) {
logManagerParam.setPageSize(DEFAULT_PAGE_SIZE);
}
// 返回分页结果
PageResult<LogRecordDTO> pageResult = new PageResult<>();
pageResult.setPageSize(logManagerParam.getPageSize());

View File

@ -2,11 +2,15 @@ package cn.stylefeng.roses.kernel.log.starter;
import cn.hutool.core.util.StrUtil;
import cn.hutool.system.SystemUtil;
import cn.stylefeng.roses.kernel.log.api.LogManagerApi;
import cn.stylefeng.roses.kernel.log.api.enums.LogSaveTypeEnum;
import cn.stylefeng.roses.kernel.log.api.expander.LogConfigExpander;
import cn.stylefeng.roses.kernel.log.api.pojo.log.SysLogProperties;
import cn.stylefeng.roses.kernel.log.api.threadpool.LogManagerThreadPool;
import cn.stylefeng.roses.kernel.log.db.DbLogManagerServiceImpl;
import cn.stylefeng.roses.kernel.log.db.DbLogRecordServiceImpl;
import cn.stylefeng.roses.kernel.log.db.service.impl.SysLogServiceImpl;
import cn.stylefeng.roses.kernel.log.file.FileLogManagerServiceImpl;
import cn.stylefeng.roses.kernel.log.file.FileLogRecordServiceImpl;
import cn.stylefeng.roses.kernel.log.modular.requestapi.aop.RequestApiLogRecordAop;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ -22,8 +26,10 @@ import org.springframework.context.annotation.Configuration;
@Configuration
public class GunsLogAutoConfiguration {
/**
*
*/
public static final String SYS_LOG_PREFIX = "sys-log";
public static final String SYS_LOG_TYPE_DEFAULT = "db";
/**
*
@ -42,26 +48,59 @@ public class GunsLogAutoConfiguration {
*
* db-file-
*
* @param sysLogProperties
* @author liuhanqing
* @date 2020/12/20 13:02
*/
@Bean
public RequestApiLogRecordAop requestApiLogRecordAop(SysLogProperties sysLogProperties) {
if (StrUtil.isBlank(sysLogProperties.getType())) {
return new RequestApiLogRecordAop(new DbLogRecordServiceImpl(new LogManagerThreadPool(), new SysLogServiceImpl()));
} else {
if (!SYS_LOG_TYPE_DEFAULT.equals(sysLogProperties.getType())) {
//修改为从sys_config中获取日志存储位置
String fileSavePath = "";
if (SystemUtil.getOsInfo().isWindows()) {
fileSavePath = LogConfigExpander.getLogFileSavePathWindows();
} else {
fileSavePath = LogConfigExpander.getLogFileSavePathLinux();
}
//sysLogProperties.getFileSavePath()
return new RequestApiLogRecordAop(new FileLogRecordServiceImpl(fileSavePath, new LogManagerThreadPool()));
// 如果类型是文件
if (StrUtil.isNotBlank(sysLogProperties.getType())
&& LogSaveTypeEnum.FILE.getCode().equals(sysLogProperties.getType())) {
// 修改为从sys_config中获取日志存储位置
String fileSavePath = "";
if (SystemUtil.getOsInfo().isWindows()) {
fileSavePath = LogConfigExpander.getLogFileSavePathWindows();
} else {
fileSavePath = LogConfigExpander.getLogFileSavePathLinux();
}
return new RequestApiLogRecordAop(new FileLogRecordServiceImpl(fileSavePath, new LogManagerThreadPool()));
}
// 其他情况用数据库存储日志
return new RequestApiLogRecordAop(new DbLogRecordServiceImpl(new LogManagerThreadPool(), new SysLogServiceImpl()));
}
/**
*
*
* @param sysLogProperties
* @author liuhanqing
* @date 2020/12/20 18:53
*/
@Bean
public LogManagerApi logManagerApi(SysLogProperties sysLogProperties) {
// 如果类型是文件
if (StrUtil.isNotBlank(sysLogProperties.getType())
&& LogSaveTypeEnum.FILE.getCode().equals(sysLogProperties.getType())) {
// 修改为从sys_config中获取日志存储位置
String fileSavePath = "";
if (SystemUtil.getOsInfo().isWindows()) {
fileSavePath = LogConfigExpander.getLogFileSavePathWindows();
} else {
fileSavePath = LogConfigExpander.getLogFileSavePathLinux();
}
return new FileLogManagerServiceImpl(fileSavePath);
}
// 其他情况用数据库存储日志
return new DbLogManagerServiceImpl();
}
}

View File

@ -1,6 +1,7 @@
package cn.stylefeng.roses.kernel.system.modular.user.factory;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.extra.spring.SpringUtil;
import cn.stylefeng.roses.kernel.auth.api.enums.DataScopeTypeEnum;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
@ -108,6 +109,9 @@ public class LoginUserFactory {
// 填充应用信息
loginUser.setApps(appsByAppCodes);
// 日志系统问题 默认初始化其他信息 dict
loginUser.setOtherInfos(new Dict());
return loginUser;
}