opt:消息通知修改

This commit is contained in:
2025-02-18 13:44:37 +08:00
parent ecd727c51a
commit 1aeebf2c3e
19 changed files with 343 additions and 153 deletions

View File

@@ -53,11 +53,13 @@ public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice
@Override
public IPage<SysNotice> queryAll(Map whereJson, PageQuery page){
String notice_title = ObjectUtil.isNotEmpty(whereJson.get("notice_title"))?whereJson.get("notice_title").toString():null;
String notice_content = ObjectUtil.isNotEmpty(whereJson.get("notice_content"))?whereJson.get("notice_content").toString():null;
String notice_type = ObjectUtil.isNotEmpty(whereJson.get("notice_type"))?whereJson.get("notice_type").toString():null;
String have_read = ObjectUtil.isNotEmpty(whereJson.get("have_read"))?whereJson.get("have_read").toString():null;
String deal_status = ObjectUtil.isNotEmpty(whereJson.get("deal_status"))?whereJson.get("deal_status").toString():null;
LambdaQueryWrapper<SysNotice> lam = new LambdaQueryWrapper<>();
lam.like(ObjectUtil.isNotEmpty(notice_title), SysNotice::getNotice_title, notice_title)
.like(ObjectUtil.isNotEmpty(notice_content), SysNotice::getNotice_content, notice_content)
.eq(ObjectUtil.isNotEmpty(notice_type), SysNotice::getNotice_type, notice_type)
.eq(ObjectUtil.isNotEmpty(have_read), SysNotice::getHave_read, have_read)
.eq(ObjectUtil.isNotEmpty(deal_status), SysNotice::getDeal_status, deal_status)

View File

@@ -100,7 +100,7 @@ public class ExecutionJob extends TLogQuartzJobBean {
quartzJobService.updateIsPause(quartzJob);
}
//异常时候打印日志
log.info(logDto.toString());
//log.info(logDto.toString());
quartzLogMapper.insert(logDto);
} finally {

View File

@@ -912,11 +912,11 @@ public class CockpitServiceImpl implements CockpitService {
// 固化室详情
CompletableFuture<JSONArray> task1 = CompletableFuture.supplyAsync(() -> {
JSONArray result = cockpitMapper.getGHSInteriorList();
log.info("读取固化室详情信息数量: {}", result.size());
//log.info("读取固化室详情信息数量: {}", result.size());
if (ObjectUtil.isNotEmpty(result)) {
JSONObject ghsDetailInfo = new JSONObject();
JSONArray guHuaShi = (JSONArray) redisUtils.get("guhuashi");
log.info("读取acs缓存固化室数量: {}", guHuaShi.size());
//log.info("读取acs缓存固化室数量: {}", guHuaShi.size());
if(ObjectUtil.isNotEmpty(guHuaShi)) {
//todo 待补充信号逻辑
for (Object object : guHuaShi) {
@@ -947,7 +947,7 @@ public class CockpitServiceImpl implements CockpitService {
//查询保湿间信息
CompletableFuture<List<Map<String, Object>>> task2 = CompletableFuture.supplyAsync(() -> {
JSONArray baoShiJian = (JSONArray) redisUtils.get("baoshijian");
log.info("读取acs缓存保湿间数量: {}", baoShiJian.size());
//("读取acs缓存保湿间数量: {}", baoShiJian.size());
//todo 设备状态待补充信号逻辑
if (ObjectUtil.isNotEmpty(baoShiJian)) {
for (Object object : baoShiJian) {
@@ -970,7 +970,7 @@ public class CockpitServiceImpl implements CockpitService {
CompletableFuture<List<Map<String, Object>>> task3 = CompletableFuture.supplyAsync(() -> {
JSONArray site = (JSONArray) redisUtils.get("site");
JSONArray siteMain = (JSONArray) redisUtils.get("siteMain");
log.info("读取acs缓存检测站点数量: {}", site.size());
//log.info("读取acs缓存检测站点数量: {}", site.size());
if (ObjectUtil.isNotEmpty(siteMain)) {
for (Object object : siteMain) {
array.add(object);
@@ -998,7 +998,7 @@ public class CockpitServiceImpl implements CockpitService {
//查询AGV数据
CompletableFuture<List<Map<String, Object>>> task4 = CompletableFuture.supplyAsync(() -> {
JSONArray agv = (JSONArray) redisUtils.get("agv");
log.info("读取acs缓存agv数量: {}", agv.size());
//log.info("读取acs缓存agv数量: {}", agv.size());
if (ObjectUtil.isNotEmpty(agv)) {
//todo 待补充信号逻辑
for (Object object : agv) {
@@ -1029,7 +1029,7 @@ public class CockpitServiceImpl implements CockpitService {
//查询RGV设备信息
CompletableFuture<List<Map<String, Object>>> task5 = CompletableFuture.supplyAsync(() -> {
JSONArray rgv = (JSONArray) redisUtils.get("rgv");
log.info("读取acs缓存rgv数量: {}", rgv.size());
//("读取acs缓存rgv数量: {}", rgv.size());
if (ObjectUtil.isNotEmpty(rgv)) {
//todo 待补充信号逻辑
for (Object object : rgv) {

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpStatus;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
@@ -88,7 +89,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
String requestNo = param.getString("requestNo");
// 获取请求方法名
String requestMethodCode = param.getString("request_method_code");
String requestMethodName = param.getString("request_method_name");
BaseResponse result = BaseResponse.build(requestNo);
String device_code = param.getString("device_code");
SchBasePoint deviceObj = pointService.getById(device_code);
@@ -111,7 +111,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// 执行创建任务
task.apply(param);
// acs对接记录
interactRecordService.saveRecord(requestMethodName, param, result, GeneralDefinition.ACS_LMS);
interactRecordService.saveRecord(requestMethodCode, param, result, GeneralDefinition.ACS_LMS);
} catch (Exception e) {
String message = e.getMessage();
log.error("ACS请求LMS出现错误,acsApply请求参数为:{},错误信息为:{},{}", param, e, message);
@@ -238,8 +238,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Override
public AgainApplyResponse againApply(JSONObject task) {
AgainApplyResponse result = AgainApplyResponse.responseOk(task.getString("request_no"));
SchBaseTask task2 = taskService.getById(task.getString("task_id"));
try {
SchBaseTask task2 = taskService.getById(task.getString("task_id"));
AbstractTask task1 = taskFactory.getTask(task2.getConfig_code());
// id / code
String pointCode = task1.againApply(task.getString("task_id"));
@@ -251,6 +251,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
? ((InvocationTargetException) e).getTargetException().getMessage()
: e.getMessage();
log.error("ACS请求LMS出现错误,againApply请求参数为:{},错误信息为:{},{}",task,e, message);
// 消息通知
noticeService.createNotice("ACS请求LMS出现错误,againApply二次请求任务信息" + JSONObject.toJSONString(task), task2.getConfig_code(), NoticeTypeEnum.EXCEPTION.getCode());
result.setCode(HttpStatus.HTTP_BAD_REQUEST);
result.setMessage(message);
result.setRequestNo(task.getString("requestNo"));

View File

@@ -79,7 +79,6 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
entity.setUpdate_id(currentUserId);
entity.setUpdate_name(nickName);
entity.setUpdate_time(now);
vehiclematerialgroupMapper.updateById(entity);
List<SchBasePoint> schBasePointList = pointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, entity.getVehicle_code()).orderByDesc(SchBasePoint::getCreate_time));
if (ObjectUtil.isNotEmpty(schBasePointList)) {
if (StringUtils.isNotBlank(schBasePointList.get(0).getVehicle_code())) {
@@ -94,6 +93,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
}
}
}
vehiclematerialgroupMapper.updateById(entity);
}

View File

@@ -43,7 +43,7 @@ public class SyncPoint {
public void run() throws Exception {
try {
log.info("自动线程开始查询天眼点位状态");
//log.info("自动线程开始查询天眼点位状态");
String url = "http://10.44.101.61:9001/api/getStatus?binNo=ALL";
HttpResponse result = HttpRequest.get(url)
.body(String.valueOf(new JSONObject()))//表单内容

View File

@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.nl.common.exception.BadRequestException;
import org.nl.config.SpringContextHolder;
import org.nl.system.service.notice.ISysNoticeService;
import org.nl.wms.database.material.service.IMdBaseMaterialService;
import org.nl.wms.ext.acs.service.dto.to.BaseResponse;
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
@@ -17,6 +18,7 @@ import org.nl.wms.sch.task.service.ISchBaseTaskService;
import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.TaskDirectionEnum;
import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum;
import org.nl.wms.sch.task_manage.task.AcsUtil;
@@ -48,6 +50,8 @@ public abstract class AbstractTask {
private IPdmBdWorkorderService workorderService;
@Autowired
private IMdBaseMaterialService materialService;
@Autowired
private ISysNoticeService noticeService;
/**
* 任务创建
@@ -113,6 +117,10 @@ public abstract class AbstractTask {
schBaseTask.setTask_status(TaskStatus.ISSUED.getCode());
taskService.update(schBaseTask);
}
} else {
// 消息通知
noticeService.createNotice("失败原因:" + result.getString("message") + ",任务信息:" + result.getString("task_info"), "任务下发失败",
NoticeTypeEnum.EXCEPTION.getCode());
}
}
}

View File

@@ -21,7 +21,7 @@ public class AutoCreateTask {
@SneakyThrows
public void run() {
log.info("定时任务AutoCreateTask开始执行:");
// log.info("定时任务AutoCreateTask开始执行:");
if (ObjectUtil.isNull(subTypes) || subTypes.isEmpty()) {
Reflections reflections = new Reflections("org.nl");
@@ -43,10 +43,10 @@ public class AutoCreateTask {
m.invoke(obj);
} catch (InvocationTargetException e) {
e.printStackTrace();
log.info("定时器执行失败:{}", e.getTargetException().getMessage());
// log.info("定时器执行失败:{}", e.getTargetException().getMessage());
} catch (Exception e) {
e.printStackTrace();
log.info("定时器执行失败:{}", e.getMessage());
// log.info("定时器执行失败:{}", e.getMessage());
}
});

View File

@@ -47,6 +47,7 @@ public class AcsUtil {
.body(s)
.execute().body();
result = JSONObject.parseObject(resultMsg);
result.put("task_info",s);
} catch (Exception e) {
String msg = e.getMessage();
//ConnectException: Connection refused: connect

View File

@@ -113,7 +113,7 @@ public class GHCMLTask extends AbstractTask {
}
});
} else {
log.info("GHCMLTask固化室满料->货架任务正在创建被锁住。");
//log.info("GHCMLTask固化室满料->货架任务正在创建被锁住。");
}
} finally {
if (tryLock) {

View File

@@ -111,7 +111,7 @@ public class GHCQLTask extends AbstractTask {
}
});
} else {
log.info("GHCQLTask固化室->固化室出口任务正在创建被锁住。");
//log.info("GHCQLTask固化室->固化室出口任务正在创建被锁住。");
}
} finally {
if (tryLock) {

View File

@@ -176,7 +176,7 @@ public class TBXMLTask extends AbstractTask {
// 获取载具类型
String vehicle_type = workorder.getVehicle_type();
// 获取物料
MdBaseMaterial material = materialService.getById(workorder.getMaterial_id());
// MdBaseMaterial material = materialService.getById(workorder.getMaterial_id());
// 获取固化方案
List<SchBasePoint> points = new ArrayList<>();
List<String> ghsList=new ArrayList<>();

View File

@@ -6,7 +6,7 @@ spring:
druid:
db-type: com.alibaba.druid.pool.DruidDataSourceQ
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&useOldAliasMetadataBehavior=true
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lms_xftn}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&useOldAliasMetadataBehavior=true
# url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:stand_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
username: ${DB_USER:root}
password: ${DB_PWD:123456}
@@ -56,7 +56,7 @@ spring:
#数据库索引
database: ${REDIS_DB:2}
# host: ${REDIS_HOST:10.44.101.112}
host: ${REDIS_HOST:10.44.101.19}
host: ${REDIS_HOST:localhost}
port: ${REDIS_PORT:6379}
password: ${REDIS_PWD:}
redisson:
@@ -165,7 +165,7 @@ sa-token:
# Redis数据库索引默认为0
database: 2
# Redis服务器地址
host: 10.44.101.19
host: localhost
# Redis服务器连接端口
port: 6379
# Redis服务器连接密码默认为空

View File

@@ -0,0 +1,167 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--配置说明:
https://www.cnblogs.com/jybky/p/12204586.html
https://blog.csdn.net/wzygis/article/details/103189490
https://www.cnblogs.com/xrq730/p/8628945.html
https://www.jianshu.com/p/af5a7bab0e59
https://blog.csdn.net/wzygis/article/details/103189490
https://juejin.cn/post/6844903775631572999
-->
<configuration scan="true" scanPeriod="30 seconds" debug="false">
<contextName>nlAdmin</contextName>
<property name="log.charset" value="utf-8"/>
<property name="log.pattern"
value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)"/>
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<property name="LOG_HOME" value="${logPath}"/>
<!--引入默认的一些设置-->
<!--<include resource="log/XrToMes.xml"/>
<include resource="log/MesToErp.xml"/>-->
<!-- <include resource="log/XgAgvDeviceDriver.xml"/>-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!-- 控制台高亮-->
<withJansi>true</withJansi>
<encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder">
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="${logPath}"/>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>100MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>50GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!--异步到文件-->
<appender name="asyncFileAppender" class="com.yomahub.tlog.core.enhance.logback.async.AspectLogbackAsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>500</queueSize>
<appender-ref ref="FILE"/>
</appender>
<!--开发环境:打印控制台-->
<springProfile name="dev">
<root level="debug">
<appender-ref ref="CONSOLE"/>
</root>
<logger name="org.springframework" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.apache" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.hibernate" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="io.netty" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="io.lettuce" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.fasterxml" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.quartz" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.google" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="springfox" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="log4jdbc" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="nl.basjes" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
</springProfile>
<!--生产环境:打印控制台和输出到文件-->
<springProfile name="prod">
<root level="debug">
<appender-ref ref="CONSOLE"/>
</root>
<logger name="org.springframework" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.apache" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.hibernate" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="io.netty" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="io.lettuce" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.fasterxml" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.quartz" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.google" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="springfox" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="log4jdbc" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="nl.basjes" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
</springProfile>
<!--测试环境:打印控制台-->
<springProfile name="test">
<root level="info">
<appender-ref ref="CONSOLE"/>
</root>
<logger name="jdbc.audit" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc.resultset" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="springfox.documentation" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc.resultsettable" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc.sqlonly" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
</springProfile>
</configuration>

View File

@@ -1,12 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--配置说明:
https://www.cnblogs.com/jybky/p/12204586.html
https://blog.csdn.net/wzygis/article/details/103189490
https://www.cnblogs.com/xrq730/p/8628945.html
https://www.jianshu.com/p/af5a7bab0e59
https://blog.csdn.net/wzygis/article/details/103189490
https://juejin.cn/post/6844903775631572999
-->
<configuration scan="true" scanPeriod="30 seconds" debug="false">
<contextName>nlAdmin</contextName>
<property name="log.charset" value="utf-8"/>
<property name="log.pattern"
value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)"/>
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<property name="LOG_HOME" value="${logPath}"/>
<!--引入默认的一些设置-->
<!--<include resource="log/XrToMes.xml"/>
<include resource="log/MesToErp.xml"/>-->
<!-- <include resource="log/XgAgvDeviceDriver.xml"/>-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!-- 控制台高亮-->
@@ -15,160 +27,141 @@
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="${logPath}"/>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>10</maxHistory>
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>100MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<appender name="ErpLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/ErpLog/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>7</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>100MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>20GB</totalSizeCap>
<totalSizeCap>50GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!--异步到文件-->
<appender name="asyncFileAppender" class="com.yomahub.tlog.core.enhance.logback.async.AspectLogbackAsyncAppender">
<discardingThreshold>2</discardingThreshold>
<discardingThreshold>0</discardingThreshold>
<queueSize>500</queueSize>
<appender-ref ref="FILE"/>
</appender>
<appender name="asyncERPFileAppender" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>2</discardingThreshold>
<queueSize>500</queueSize>
<appender-ref ref="ErpLogFile"/>
</appender>
<appender name="luceneAppender" class="org.nl.common.lucene.LuceneAppender" >
<properties>
<property>
<name>system</name>
<value>lms</value>
</property>
<property>
<name>logLevel</name>
<value>%level</value>
</property>
<property>
<name>requestMethod</name>
<value>%X{requestMethod}</value>
</property>
<property>
<name>requestTime</name>
<value>%d{yyyy-MM-dd HH:mm:ss.SSS}</value>
</property>
<property>
<name>requestIp</name>
<value>%X{requestIp}</value>
</property>
<property>
<name>thread</name>
<value>%thread</value>
</property>
<property>
<name>logger</name>
<value>%logger</value>
</property>
</properties>
</appender>
<appender name="asyncLuceneAppender" class="org.nl.common.lucene.AsyncLuceneAppender">
<appender-ref ref="luceneAppender" />
<queueSize>512</queueSize>
</appender>
<!--开发环境:打印控制台-->
<springProfile name="dev">
<root level="info">
<appender-ref ref="asyncLuceneAppender"/>
<root level="debug">
<appender-ref ref="CONSOLE"/>
</root>
<logger name="jdbc" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="com.yomahub.tlog.web.interceptor.TLogWebInvokeTimeInterceptor" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.springframework" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.hibernate" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.quartz" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="com.google" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.redisson" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.nl.modules.wql" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.springframework.data" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
</logger>
</springProfile>
<springProfile name="prod">
<root level="info">
<appender-ref ref="asyncLuceneAppender"/>
<logger name="org.springframework" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</root>
<logger name="jdbc" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="jdbc" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<logger name="org.apache" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.nl.wms.sch.point.service.task.SyncPoint" level="WARN" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<logger name="org.hibernate" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.springframework" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<logger name="io.netty" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.hibernate" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<logger name="jdbc" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.quartz" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<logger name="io.lettuce" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.google" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<logger name="com.fasterxml" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.redisson" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<logger name="org.quartz" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.nl.modules.wql" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<logger name="com.google" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.springframework.data" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<logger name="springfox" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="log4jdbc" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="nl.basjes" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
</springProfile>
<!--测试环境:打印控制台-->
<!--生产环境:打印控制台和输出到文件-->
<springProfile name="prod">
<root level="debug">
<appender-ref ref="CONSOLE"/>
</root>
<logger name="org.springframework" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.apache" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.hibernate" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="io.netty" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="io.lettuce" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.fasterxml" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.quartz" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.google" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="springfox" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="log4jdbc" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="nl.basjes" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
</springProfile>
<!--测试环境:打印控制台-->
<springProfile name="test">
<root level="info">
<appender-ref ref="CONSOLE"/>
</root>
<logger name="jdbc.audit" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc.resultset" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="springfox.documentation" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc.resultsettable" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc.sqlonly" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
</springProfile>
</configuration>