定时删除日志

yun-zuoyi
汪云昊 6 years ago
parent aaf76a00dc
commit 6c2eea3909

@ -22,4 +22,10 @@ public interface ISysLogExceptionService {
*/
@ApiOperation(value = "系统异常日志复杂查询,分页,排序")
ListPager<SysLogException> querySysLogExceptionByPager(SysLogException sysLogException, Pager pager);
/**
*
* @param dateTime
*/
long deleteSysLogExceptionByDateTimeAfter(String dateTime);
}

@ -81,4 +81,10 @@ public interface ISysLogOperateService {
*/
@ApiOperation(value = "查询最新的操作日志")
List<SysLogOperate> findNewSysLogOperate(Integer num);
/**
*
* @param dateTime
*/
long deleteSysLogOperateByDateTimeAfter(String dateTime);
}

@ -45,4 +45,10 @@ public interface ISysLogSystemService {
*/
@ApiOperation(value = "系统日志按id区间查询",notes = "系统日志按id区间查询")
List<SysLogSystem> findSysLogSystemByIdInterval(long min, long max);
/**
*
* @param dateTime
*/
long deleteSysLogSystemByDateTimeAfter(String dateTime);
}

@ -44,4 +44,10 @@ public interface ISysLogTaskTimeService {
*/
@ApiOperation(value = "定时任务日志分页复杂查询",notes = "定时任务日志分页复杂查询")
ListPager querySysLogTaskTimeByPager(SysLogTaskTime sysLogTaskTime, Pager pager);
/**
*
* @param dateTime
*/
long deleteSysLogTaskTimeByDateTimeAfter(String dateTime);
}

@ -1,7 +1,15 @@
package cn.estsh.i3plus.core.apiservice.controller;
import cn.estsh.i3plus.core.api.iservice.busi.*;
import cn.estsh.i3plus.core.apiservice.controller.busi.ComputePi;
import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysDepartmentService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLogSystemService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysMenuService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysOrganizeService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysPositionService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysToolService;
import cn.estsh.i3plus.core.api.iservice.busi.ISystemResourceService;
import cn.estsh.i3plus.core.api.iservice.busi.ITestService;
import cn.estsh.i3plus.core.apiservice.controller.busi.PersonnelController;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.BaseBean;
@ -11,7 +19,18 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.model.platform.UserDetailModel;
import cn.estsh.i3plus.pojo.platform.bean.*;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.SysDepartment;
import cn.estsh.i3plus.pojo.platform.bean.SysOrganize;
import cn.estsh.i3plus.pojo.platform.bean.SysPosition;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserDepartment;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserInfoDepartment;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserPosition;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserRole;
import cn.estsh.i3plus.pojo.platform.bean.SysRole;
import cn.estsh.i3plus.pojo.platform.bean.SysTool;
import cn.estsh.i3plus.pojo.platform.bean.SysUser;
import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo;
import cn.estsh.i3plus.pojo.platform.platbean.SysLogSystem;
import cn.estsh.impp.framework.boot.eureka.EurekaClientHealthCheck;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
@ -30,13 +49,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
@ -1144,3 +1163,87 @@ class TestThread implements Runnable {
}
}
}
final class ComputePi {
private ComputePi(){}
/**
* π   π/4=1-1/3+1/5-1/7+1/9
*   π/2=2*2/3*4/3*4/5*6/5*6/7*8/7*8/9
*/
/**
* constants used in pi computation
*/
private static final BigDecimal FOUR = BigDecimal.valueOf(4);
/**
* rounding mode to use during pi computation
*/
private static final int ROUNDING_MODE = BigDecimal.ROUND_HALF_EVEN;
/**
* Compute the value of pi to the specified number of
* digits after the decimal point. The value is
* computed using Machin's formula:
* <p>
* pi/4 = 4*arctan(1/5) - arctan(1/239)
* <p>
* and a power series expansion of arctan(x) to
* sufficient precision.
*/
public static void main(String[] args) {
int digits = 1000; //精度10万位
String pi = computePi(digits).toString();
System.out.println("length: " + pi.length());
System.out.println(pi);
}
public static BigDecimal computePi(int digits) {
int scale = digits + 5;
BigDecimal arctan1_5 = arctan(5, scale);
BigDecimal arctan1_239 = arctan(239, scale);
BigDecimal pi = arctan1_5.multiply(FOUR).subtract(arctan1_239).multiply(FOUR);
return pi.setScale(digits, BigDecimal.ROUND_HALF_UP);
}
/**
* Compute the value, in radians, of the arctangent of
* the inverse of the supplied integer to the specified
* number of digits after the decimal point. The value
* is computed using the power series expansion for the
* arc tangent:
* <p>
* arctan(x) = x - (x^3)/3 + (x^5)/5 - (x^7)/7 +
* (x^9)/9 ...
*/
public static BigDecimal arctan(int inverseX, int scale) {
BigDecimal result, numer, term;
BigDecimal invX = BigDecimal.valueOf(inverseX);
BigDecimal invX2 = BigDecimal.valueOf(inverseX * inverseX);
numer = BigDecimal.ONE.divide(invX, scale, ROUNDING_MODE);
result = numer;
int i = 1;
do {
numer =
numer.divide(invX2, scale, ROUNDING_MODE);
int denom = 2 * i + 1;
term =
numer.divide(BigDecimal.valueOf(denom),
scale, ROUNDING_MODE);
if ((i % 2) != 0) {
result = result.subtract(term);
} else {
result = result.add(term);
}
i++;
} while (term.compareTo(BigDecimal.ZERO) != 0);
return result;
}
}

@ -1,95 +0,0 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import java.math.BigDecimal;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2019-02-22 17:40
* @Modify:
**/
public final class ComputePi {
private ComputePi(){}
/**
* π   π/4=1-1/3+1/5-1/7+1/9
*   π/2=2*2/3*4/3*4/5*6/5*6/7*8/7*8/9
*/
/**
* constants used in pi computation
*/
private static final BigDecimal FOUR = BigDecimal.valueOf(4);
/**
* rounding mode to use during pi computation
*/
private static final int ROUNDING_MODE = BigDecimal.ROUND_HALF_EVEN;
/**
* Compute the value of pi to the specified number of
* digits after the decimal point. The value is
* computed using Machin's formula:
* <p>
* pi/4 = 4*arctan(1/5) - arctan(1/239)
* <p>
* and a power series expansion of arctan(x) to
* sufficient precision.
*/
public static void main(String[] args) {
int digits = 1000; //精度10万位
String pi = computePi(digits).toString();
System.out.println("length: " + pi.length());
System.out.println(pi);
}
public static BigDecimal computePi(int digits) {
int scale = digits + 5;
BigDecimal arctan1_5 = arctan(5, scale);
BigDecimal arctan1_239 = arctan(239, scale);
BigDecimal pi = arctan1_5.multiply(FOUR).subtract(arctan1_239).multiply(FOUR);
return pi.setScale(digits, BigDecimal.ROUND_HALF_UP);
}
/**
* Compute the value, in radians, of the arctangent of
* the inverse of the supplied integer to the specified
* number of digits after the decimal point. The value
* is computed using the power series expansion for the
* arc tangent:
* <p>
* arctan(x) = x - (x^3)/3 + (x^5)/5 - (x^7)/7 +
* (x^9)/9 ...
*/
public static BigDecimal arctan(int inverseX, int scale) {
BigDecimal result, numer, term;
BigDecimal invX = BigDecimal.valueOf(inverseX);
BigDecimal invX2 = BigDecimal.valueOf(inverseX * inverseX);
numer = BigDecimal.ONE.divide(invX, scale, ROUNDING_MODE);
result = numer;
int i = 1;
do {
numer =
numer.divide(invX2, scale, ROUNDING_MODE);
int denom = 2 * i + 1;
term =
numer.divide(BigDecimal.valueOf(denom),
scale, ROUNDING_MODE);
if ((i % 2) != 0) {
result = result.subtract(term);
} else {
result = result.add(term);
}
i++;
} while (term.compareTo(BigDecimal.ZERO) != 0);
return result;
}
}

@ -0,0 +1,69 @@
package cn.estsh.i3plus.core.apiservice.schedulejob;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLogExceptionService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLogOperateService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLogSystemService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLogTaskTimeService;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.impp.framework.base.schedule.BaseImppScheduleJob;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
import org.quartz.JobExecutionContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import java.util.Calendar;
import java.util.Date;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2019-07-04 19:13
* @Modify:
**/
public class CoreLogClearJob extends BaseImppScheduleJob {
public static final Logger LOGGER = LoggerFactory.getLogger(CoreLogClearJob.class);
public CoreLogClearJob() {
super(CoreLogClearJob.class,"日志清除");
}
@Value("${impp.log.retention-time:-1}")
public Integer retentionTime;
@Autowired
private ISysLogSystemService sysLogSystemService;
@Autowired
private ISysLogExceptionService sysLogExceptionService;
@Autowired
private ISysLogOperateService sysLogOperateService;
@Autowired
private ISysLogTaskTimeService sysLogTaskTimeService;
@Override
public void executeImppJob(JobExecutionContext context, ApplicationProperties applicationProperties) {
// 判断日志保留时间 -1 永久
if(getJobParam() != null && Integer.parseInt(getJobParam()) != -1){
// 计算保留日期
String dateTime = TimeTool.pareDateToString("yyyy-MM-dd HH:mm:ss",
TimeTool.timeCalc(new Date(), Calendar.DAY_OF_MONTH, -retentionTime)
);
long count;
count = sysLogSystemService.deleteSysLogSystemByDateTimeAfter(dateTime);
LOGGER.info("【日志清理】 清理系统日志 {} 条", count);
count = sysLogExceptionService.deleteSysLogExceptionByDateTimeAfter(dateTime);
LOGGER.info("【日志清理】 清理异常日志 {} 条", count);
count = sysLogOperateService.deleteSysLogOperateByDateTimeAfter(dateTime);
LOGGER.info("【日志清理】 清理操作日志 {} 条", count);
count = sysLogTaskTimeService.deleteSysLogTaskTimeByDateTimeAfter(dateTime);
LOGGER.info("【日志清理】 清理定时任务日志 {} 条", count);
}
}
}

@ -42,4 +42,9 @@ public class SysLogExceptionService implements ISysLogExceptionService {
,sysLogException.getAscOrDesc()),pager);
}
}
@Override
public long deleteSysLogExceptionByDateTimeAfter(String dateTime) {
return sysLogExceptionRDao.deleteByProperty(CoreBsonPack.packBsonByDateTimeAfter(dateTime));
}
}

@ -99,4 +99,9 @@ public class SysLogOperateService implements ISysLogOperateService {
sysLogOperate.setAscOrDesc(CommonEnumUtil.ASC_OR_DESC.DESC.getValue());
return logOperateRDao.findByBsonPager(null,page,sysLogOperate.getOrderByParam(),sysLogOperate.getAscOrDesc());
}
@Override
public long deleteSysLogOperateByDateTimeAfter(String dateTime) {
return logOperateRDao.deleteByProperty(CoreBsonPack.packBsonByDateTimeAfter(dateTime));
}
}

@ -111,4 +111,9 @@ public class SysLogSystemService implements ISysLogSystemService {
public List<SysLogSystem> findSysLogSystemByIdInterval(long min, long max) {
return logSystemRDao.findByBson(CoreBsonPack.packBsonByInterval("_id",min,max));
}
@Override
public long deleteSysLogSystemByDateTimeAfter(String dateTime) {
return logSystemRDao.deleteByProperty(CoreBsonPack.packBsonByDateTimeAfter(dateTime));
}
}

@ -60,4 +60,9 @@ public class SysLogTaskTimeService implements ISysLogTaskTimeService {
,sysLogTaskTime.getAscOrDesc()),pager);
}
}
@Override
public long deleteSysLogTaskTimeByDateTimeAfter(String dateTime) {
return sysLogTaskTimeRDao.deleteByProperty(CoreBsonPack.packBsonByDateTimeAfter(dateTime));
}
}

Loading…
Cancel
Save