add:接入mqtt(td:项目启停时设备信号读写)
This commit is contained in:
@@ -237,6 +237,12 @@
|
|||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-web</artifactId>
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- https://mvnrepository.com/artifact/com.alibaba/transmittable-thread-local -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba</groupId>
|
||||||
|
<artifactId>transmittable-thread-local</artifactId>
|
||||||
|
<version>2.14.2</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!--Spring boot 测试-->
|
<!--Spring boot 测试-->
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -409,19 +415,6 @@
|
|||||||
<version>1.6.2</version>
|
<version>1.6.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 解析客户端操作系统、浏览器信息 -->
|
|
||||||
<!-- <dependency>-->
|
|
||||||
<!-- <groupId>nl.basjes.parse.useragent</groupId>-->
|
|
||||||
<!-- <artifactId>yauaa</artifactId>-->
|
|
||||||
<!-- <version>5.23</version>-->
|
|
||||||
<!-- </dependency>-->
|
|
||||||
|
|
||||||
<!-- <dependency>-->
|
|
||||||
<!-- <groupId>eu.bitwalker</groupId>-->
|
|
||||||
<!-- <artifactId>UserAgentUtils</artifactId>-->
|
|
||||||
<!-- <version>1.21</version>-->
|
|
||||||
<!-- </dependency>-->
|
|
||||||
|
|
||||||
<!-- Lucence核心包 -->
|
<!-- Lucence核心包 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.lucene</groupId>
|
<groupId>org.apache.lucene</groupId>
|
||||||
@@ -468,9 +461,20 @@
|
|||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-actuator</artifactId>
|
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-integration</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.integration</groupId>
|
||||||
|
<artifactId>spring-integration-stream</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.integration</groupId>
|
||||||
|
<artifactId>spring-integration-mqtt</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
<!--mqtt依赖-->
|
||||||
<distributionManagement>
|
<distributionManagement>
|
||||||
<!--正式版本-->
|
<!--正式版本-->
|
||||||
<repository>
|
<repository>
|
||||||
|
|||||||
@@ -38,10 +38,6 @@ public class LokiLogAspect {
|
|||||||
*/
|
*/
|
||||||
@Around("operatorLog()")
|
@Around("operatorLog()")
|
||||||
public Object around(ProceedingJoinPoint pjp) throws Throwable {
|
public Object around(ProceedingJoinPoint pjp) throws Throwable {
|
||||||
// ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
|
||||||
// HttpServletRequest request = attributes.getRequest();
|
|
||||||
// HttpServletResponse response = attributes.getResponse();
|
|
||||||
|
|
||||||
Signature signature = pjp.getSignature();
|
Signature signature = pjp.getSignature();
|
||||||
MethodSignature methodSignature = (MethodSignature) signature;
|
MethodSignature methodSignature = (MethodSignature) signature;
|
||||||
Method method = methodSignature.getMethod();
|
Method method = methodSignature.getMethod();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.nl.config.lucene;
|
package org.nl.common.utils;
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
|
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
|
||||||
import org.springframework.core.io.ClassPathResource;
|
import org.springframework.core.io.ClassPathResource;
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package org.nl.config.lucene;
|
||||||
|
/**
|
||||||
|
* @author ldjun
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2023年08月24日 13:00
|
||||||
|
* @desc desc
|
||||||
|
*/
|
||||||
|
|
||||||
|
import ch.qos.logback.classic.AsyncAppender;
|
||||||
|
import ch.qos.logback.classic.spi.ILoggingEvent;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.slf4j.MDC;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class AsyncLuceneAppender extends AsyncAppender {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void append(ILoggingEvent event) {
|
||||||
|
String traceId = LuceneAppender.traceIdTL.get();
|
||||||
|
if (StringUtils.isNotEmpty(traceId)){
|
||||||
|
MDC.put("traceId",traceId);
|
||||||
|
Map<String, String> mdcPropertyMap = event.getMDCPropertyMap();
|
||||||
|
if (mdcPropertyMap.getClass().getName().contains("SynchronizedMap")){
|
||||||
|
mdcPropertyMap.put("traceId",traceId);
|
||||||
|
}
|
||||||
|
MDC.clear();
|
||||||
|
}
|
||||||
|
super.append(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,20 +8,26 @@ package org.nl.config.lucene;
|
|||||||
|
|
||||||
import ch.qos.logback.classic.spi.ILoggingEvent;
|
import ch.qos.logback.classic.spi.ILoggingEvent;
|
||||||
import ch.qos.logback.core.AppenderBase;
|
import ch.qos.logback.core.AppenderBase;
|
||||||
|
import com.alibaba.ttl.TransmittableThreadLocal;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.lucene.analysis.Analyzer;
|
import org.apache.lucene.analysis.Analyzer;
|
||||||
import org.apache.lucene.document.*;
|
import org.apache.lucene.document.*;
|
||||||
import org.apache.lucene.index.IndexWriter;
|
import org.apache.lucene.index.IndexWriter;
|
||||||
import org.apache.lucene.index.IndexWriterConfig;
|
import org.apache.lucene.index.IndexWriterConfig;
|
||||||
import org.apache.lucene.store.Directory;
|
import org.apache.lucene.store.Directory;
|
||||||
import org.apache.lucene.store.FSDirectory;
|
import org.apache.lucene.store.FSDirectory;
|
||||||
|
import org.nl.common.utils.YmlConfigFileUtil;
|
||||||
import org.wltea.analyzer.lucene.IKAnalyzer;
|
import org.wltea.analyzer.lucene.IKAnalyzer;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
public class LuceneAppender extends AppenderBase<ILoggingEvent> {
|
public class LuceneAppender extends AppenderBase<ILoggingEvent> {
|
||||||
|
|
||||||
|
public static final TransmittableThreadLocal<String> traceIdTL = new TransmittableThreadLocal();
|
||||||
public LuceneProperties properties;
|
public LuceneProperties properties;
|
||||||
public static Directory index;
|
public static Directory index;
|
||||||
private List<LucenePropertyAndEncoder> encoders;
|
private List<LucenePropertyAndEncoder> encoders;
|
||||||
@@ -38,6 +44,7 @@ public class LuceneAppender extends AppenderBase<ILoggingEvent> {
|
|||||||
|
|
||||||
// 获取配置值
|
// 获取配置值
|
||||||
String luceneDir = properties.getProperty("lucene.index.path");
|
String luceneDir = properties.getProperty("lucene.index.path");
|
||||||
|
System.out.println("---index地址----"+luceneDir);
|
||||||
index = FSDirectory.open(Paths.get(luceneDir));
|
index = FSDirectory.open(Paths.get(luceneDir));
|
||||||
// 初始化 Lucene 索引
|
// 初始化 Lucene 索引
|
||||||
Analyzer analyzer = new IKAnalyzer();
|
Analyzer analyzer = new IKAnalyzer();
|
||||||
@@ -54,12 +61,19 @@ public class LuceneAppender extends AppenderBase<ILoggingEvent> {
|
|||||||
Document doc = new Document();
|
Document doc = new Document();
|
||||||
for (Property property : this.properties.getProperties()) {
|
for (Property property : this.properties.getProperties()) {
|
||||||
LucenePropertyAndEncoder encoder = new LucenePropertyAndEncoder(property, this.context);
|
LucenePropertyAndEncoder encoder = new LucenePropertyAndEncoder(property, this.context);
|
||||||
doc.add(new StringField(property.getName(), encoder.encode(event), Field.Store.YES));
|
String encode = encoder.encode(event);
|
||||||
|
doc.add(new StringField(property.getName(), encode, Field.Store.YES));
|
||||||
}
|
}
|
||||||
|
Map<String, String> map = event.getMDCPropertyMap();
|
||||||
|
if (!map.isEmpty() && StringUtils.isNotEmpty(map.get("traceId"))){
|
||||||
|
doc.add(new StringField("traceId",map.get("traceId"), Field.Store.YES));
|
||||||
|
}else {
|
||||||
|
doc.add(new StringField("traceId"," ", Field.Store.YES));
|
||||||
|
}
|
||||||
|
|
||||||
doc.add(new TextField(LogMessageConstant.FIELD_MESSAGE, event.getFormattedMessage(), Field.Store.YES));
|
doc.add(new TextField(LogMessageConstant.FIELD_MESSAGE, event.getFormattedMessage(), Field.Store.YES));
|
||||||
doc.add(new StringField(LogMessageConstant.FIELD_TIMESTAMP, String.valueOf(event.getTimeStamp()),Field.Store.YES));
|
doc.add(new StringField(LogMessageConstant.FIELD_TIMESTAMP, String.valueOf(event.getTimeStamp()),Field.Store.YES));
|
||||||
doc.add(new NumericDocValuesField(LogMessageConstant.SORT_NAME, event.getTimeStamp()));
|
doc.add(new NumericDocValuesField(LogMessageConstant.SORT_NAME, event.getTimeStamp()));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
indexWriter.addDocument(doc);
|
indexWriter.addDocument(doc);
|
||||||
indexWriter.commit();
|
indexWriter.commit();
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package org.nl.config.lucene;
|
package org.nl.config.lucene;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package org.nl.config.mqtt;
|
|||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.eclipse.paho.client.mqttv3.MqttClient;
|
import org.eclipse.paho.client.mqttv3.MqttClient;
|
||||||
import org.eclipse.paho.client.mqttv3.MqttException;
|
|
||||||
import org.eclipse.paho.client.mqttv3.MqttMessage;
|
import org.eclipse.paho.client.mqttv3.MqttMessage;
|
||||||
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
|
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
|
||||||
import org.nl.config.mqtt.callback.PublishCallback;
|
import org.nl.config.mqtt.callback.PublishCallback;
|
||||||
|
|||||||
@@ -161,7 +161,3 @@ sa-token:
|
|||||||
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
|
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
|
||||||
# token 前缀
|
# token 前缀
|
||||||
token-prefix: Bearer
|
token-prefix: Bearer
|
||||||
|
|
||||||
loki:
|
|
||||||
url: http://127.0.0.1:3100/loki/api/v1
|
|
||||||
systemName: acs
|
|
||||||
|
|||||||
@@ -165,7 +165,3 @@ sa-token:
|
|||||||
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
|
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
|
||||||
# token 前缀
|
# token 前缀
|
||||||
token-prefix: Bearer
|
token-prefix: Bearer
|
||||||
|
|
||||||
loki:
|
|
||||||
url: http://localhost:3100/loki/api/v1
|
|
||||||
systemName: acs
|
|
||||||
|
|||||||
@@ -157,7 +157,3 @@ sa-token:
|
|||||||
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
|
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
|
||||||
# token 前缀
|
# token 前缀
|
||||||
token-prefix: Bearer
|
token-prefix: Bearer
|
||||||
|
|
||||||
loki:
|
|
||||||
url: http://localhost:3100/loki/api/v1
|
|
||||||
systemName: acs
|
|
||||||
|
|||||||
@@ -78,3 +78,6 @@ security:
|
|||||||
- /api/localStorage/pictures
|
- /api/localStorage/pictures
|
||||||
# 参数
|
# 参数
|
||||||
- /api/param/getValueByCode
|
- /api/param/getValueByCode
|
||||||
|
lucene:
|
||||||
|
index:
|
||||||
|
path: D:\lucene\index
|
||||||
|
|||||||
@@ -66,26 +66,44 @@ https://juejin.cn/post/6844903775631572999
|
|||||||
<queueSize>500</queueSize>
|
<queueSize>500</queueSize>
|
||||||
<appender-ref ref="FILE"/>
|
<appender-ref ref="FILE"/>
|
||||||
</appender>
|
</appender>
|
||||||
|
<appender name="luceneAppender" class="org.nl.common.lucene.LuceneAppender" >
|
||||||
<!--添加loki-->
|
<properties>
|
||||||
<appender name="lokiAppender" class="com.github.loki4j.logback.Loki4jAppender">
|
<property>
|
||||||
<batchTimeoutMs>1000</batchTimeoutMs>
|
<name>system</name>
|
||||||
<http class="com.github.loki4j.logback.ApacheHttpSender">
|
<value>lms</value>
|
||||||
<url>${LOKI_URL}/push</url>
|
</property>
|
||||||
</http>
|
<property>
|
||||||
<format>
|
<name>logLevel</name>
|
||||||
<label>
|
<value>%level</value>
|
||||||
<pattern>
|
</property>
|
||||||
system=${SYSTEM_NAME},level=%level,logType=%X{log_file_type:-logType},device=%X{device_code_log:-device}
|
<property>
|
||||||
</pattern>
|
<name>requestMethod</name>
|
||||||
</label>
|
<value>%X{requestMethod}</value>
|
||||||
<message>
|
</property>
|
||||||
<pattern>${log.pattern}</pattern>
|
<property>
|
||||||
</message>
|
<name>requestTime</name>
|
||||||
<sortByTime>true</sortByTime>
|
<value>%d{yyyy-MM-dd HH:mm:ss.SSS}</value>
|
||||||
</format>
|
</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>
|
</appender>
|
||||||
|
|
||||||
|
<!--添加loki-->
|
||||||
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
<level>error</level>
|
<level>error</level>
|
||||||
@@ -111,21 +129,21 @@ https://juejin.cn/post/6844903775631572999
|
|||||||
<springProfile name="dev">
|
<springProfile name="dev">
|
||||||
<root level="info">
|
<root level="info">
|
||||||
<appender-ref ref="CONSOLE"/>
|
<appender-ref ref="CONSOLE"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
</root>
|
</root>
|
||||||
<!--logmanage -->
|
<!--logmanage -->
|
||||||
<logger name="org.nl.acs.log.service.impl.DeviceExecuteLogServiceImpl" level="info" additivity="false">
|
<logger name="org.nl.acs.log.service.impl.DeviceExecuteLogServiceImpl" level="info" additivity="false">
|
||||||
<appender-ref ref="CONSOLE"/>
|
<appender-ref ref="CONSOLE"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="jdbc.resultsettable" level="ERROR" additivity="false">
|
<logger name="jdbc.resultsettable" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="CONSOLE"/>
|
<appender-ref ref="CONSOLE"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="org.openscada.opc.lib.da.Server" level="ERROR" additivity="false">
|
<logger name="org.openscada.opc.lib.da.Server" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="CONSOLE"/>
|
<appender-ref ref="CONSOLE"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<!--logmanage -->
|
<!--logmanage -->
|
||||||
|
|
||||||
@@ -165,20 +183,20 @@ https://juejin.cn/post/6844903775631572999
|
|||||||
<springProfile name="prod">
|
<springProfile name="prod">
|
||||||
<root level="info">
|
<root level="info">
|
||||||
<appender-ref ref="ERROR"/>
|
<appender-ref ref="ERROR"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
</root>
|
</root>
|
||||||
<!--logmanage -->
|
<!--logmanage -->
|
||||||
<logger name="org.nl.acs.log.service.impl.DeviceExecuteLogServiceImpl" level="info" additivity="false">
|
<logger name="org.nl.acs.log.service.impl.DeviceExecuteLogServiceImpl" level="info" additivity="false">
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="jdbc.resultsettable" level="ERROR" additivity="false">
|
<logger name="jdbc.resultsettable" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="CONSOLE"/>
|
<appender-ref ref="CONSOLE"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="org.openscada.opc.lib.da.Server" level="ERROR" additivity="false">
|
<logger name="org.openscada.opc.lib.da.Server" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="CONSOLE"/>
|
<appender-ref ref="CONSOLE"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<!--logmanage -->
|
<!--logmanage -->
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user