Ver Fonte

日志中添加设备号

rainbow954 há 6 anos atrás
pai
commit
ef931c97d8

+ 5 - 2
src/main/java/com/tidecloud/dataacceptance/service/AcceptanceInboundHandlerAdapter.java

@@ -63,7 +63,7 @@ public  class AcceptanceInboundHandlerAdapter extends ChannelInboundHandlerAdapt
 	public static String PREFIX_LINK = "s.";
 	public static String PREFIX_LINK_BACK = "s.b.";
 	public static String PREFIX_DEVICE = "d.";
-
+	public static String MDC_DEVICEID = "deviceId";
 	public static final Integer REDIS_INDEX_LINK = 15;
 
 	public static Map<String, String> channelMap = new HashMap<String, String>();
@@ -100,6 +100,7 @@ public  class AcceptanceInboundHandlerAdapter extends ChannelInboundHandlerAdapt
 	}
 
 	protected void manageChannel(Channel channel, String deviceId) {
+		MDC.put(MDC_DEVICEID, deviceId);
 		String socketkey = channel.id().asLongText();
 		Channel channelInMap = socketyChannelMap.get(socketkey);
 		String deviceIdInMap = channelDeviceMap.get(channel);
@@ -133,7 +134,7 @@ public  class AcceptanceInboundHandlerAdapter extends ChannelInboundHandlerAdapt
 	protected void sendKakfaMsg(byte[] dataByteArray,  String deviceId) {
 		Integer key = new Integer(deviceId.hashCode());
 		MDC.put("strategyName", this.getPrefixName());
-		
+		MDC.put(MDC_DEVICEID, deviceId);
 		
 		String msg = getMsg(dataByteArray);
 		ListenableFuture<SendResult<Integer, byte[]>> listenableFuture = kafkaTemplate.send(topic, key, dataByteArray);
@@ -142,6 +143,7 @@ public  class AcceptanceInboundHandlerAdapter extends ChannelInboundHandlerAdapt
 		SuccessCallback<SendResult<Integer,  byte[]>> successCallback = new SuccessCallback<SendResult<Integer,  byte[]>>() {
 			@Override
 			public void onSuccess(SendResult<Integer,  byte[]> result) {
+				MDC.put(MDC_DEVICEID, deviceId);
 				MDC.put("strategyName", AcceptanceInboundHandlerAdapter.this.getPrefixName());
 				// 成功业务逻辑
 				logger.info("发送kafka成功.deviceId:{}, msg:{}", deviceId, msg);
@@ -151,6 +153,7 @@ public  class AcceptanceInboundHandlerAdapter extends ChannelInboundHandlerAdapt
 		FailureCallback failureCallback = new FailureCallback() {
 			@Override
 			public void onFailure(Throwable ex) {
+				MDC.put(MDC_DEVICEID, deviceId);
 				MDC.put("strategyName", AcceptanceInboundHandlerAdapter.this.getPrefixName());
 				// 失败业务逻辑
 				logger.error("发送kafka失败.deviceId:{}, msg:{}", deviceId, msg);

+ 5 - 1
src/main/java/com/tidecloud/dataacceptance/service/HexBinaryAcceptanceHandlerAdapter.java

@@ -38,7 +38,11 @@ public abstract class HexBinaryAcceptanceHandlerAdapter extends AcceptanceInboun
 		byte[] dataByteArray = new byte[dataByteBuf.readableBytes()];
 		dataByteBuf.readBytes(dataByteArray);
 		String printHexBinary = DatatypeConverter.printHexBinary(dataByteArray);
-		logger.info("设备: [{}] 传入数据为 : {}", channelDeviceMap.get(ctx.channel()), printHexBinary);
+		if (channelDeviceMap.get(ctx.channel())!=null)
+			logger.info("设备: [{}] 传入数据为 : {}", channelDeviceMap.get(ctx.channel()), printHexBinary);
+		else {
+			logger.info("设备传入数据为 : {}", printHexBinary);
+		}
 		dataByteBuf.resetReaderIndex();
 		//dataByteBufCopy.release();
 	}

+ 4 - 2
src/main/java/com/tidecloud/dataacceptance/service/impl/BSJGpsServerHandler.java

@@ -4,6 +4,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
 
@@ -62,8 +63,9 @@ public class BSJGpsServerHandler extends HexBinaryAcceptanceHandlerAdapter {
 			PackageData packageData = this.decoder.bytes2PackageData(dataByteArrayDoEscape);
 			// link manage
 			packageData.setChannel(channel);
-			
-			packageData.setDeviceId(packageData.getMsgHeader().getTerminalPhone());
+			String deviceId = packageData.getMsgHeader().getTerminalPhone();
+			MDC.put(MDC_DEVICEID, deviceId);
+			packageData.setDeviceId(deviceId);
 			//发送数据到kafka
 			final MsgHeader header = packageData.getMsgHeader();
 			if (Constants.MSG_TERMINAL_LOCATION_INFO_UPLOAD == header.getMsgId()) {

+ 4 - 1
src/main/java/com/tidecloud/dataacceptance/service/impl/PinShenData86ServerHandler.java

@@ -5,6 +5,7 @@ import javax.xml.bind.DatatypeConverter;
 import org.apache.commons.lang.ArrayUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
 
@@ -43,8 +44,10 @@ public class PinShenData86ServerHandler extends HexBinaryAcceptanceHandlerAdapte
 	@Override
 	protected void handle(ByteBuf in, Channel channel) throws Exception {
 		PinShenWaterDevice device = PinShenWaterUtils.handle(in);
-		if (device != null)
+		if (device != null) {
+			MDC.put(MDC_DEVICEID, device.getDeviceId());
 			this.handle(device, channel, in);
+		}
 	}
 
 	private void handle(PinShenWaterDevice device, Channel channel, ByteBuf in) throws Exception {

+ 2 - 0
src/main/java/com/tidecloud/dataacceptance/service/impl/WatchServerHandler.java

@@ -10,6 +10,7 @@ import javax.xml.bind.DatatypeConverter;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
 
@@ -44,6 +45,7 @@ public class WatchServerHandler extends HexBinaryAcceptanceHandlerAdapter {
 		String msg = byteBufferToString(byteBuf.nioBuffer());
 		Advice advice = getAdevice(msg);
 		String deviceId = advice.getDeviceId();
+		MDC.put(MDC_DEVICEID, deviceId);
 		String adviceType = advice.getAdviceType();
 
 		switch (adviceType) {

+ 27 - 5
src/main/java/com/tidecloud/dataacceptance/service/impl/YiTongGpsServerHandler.java

@@ -7,6 +7,7 @@ import javax.xml.bind.DatatypeConverter;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
 
@@ -102,24 +103,25 @@ public class YiTongGpsServerHandler extends HexBinaryAcceptanceHandlerAdapter {
 	private void handle(ByteBuf in, int length, Channel channel) throws Exception {
 		if (in.isReadable()) {
 			String deviceId = channelDeviceMap.get(channel);
-
+			if (deviceId!=null) {
+				MDC.put(MDC_DEVICEID, deviceId);
+			}
 			byte msgType = in.readByte();
 			if (LOGIN_MSG == msgType) {
-
 				resolveLoginMSG(in, channel);
 			} else if (LOCATION_MSG == msgType) {
 				logger.info("GPS 定位包");
 				sendMsg2Kafka(getOriginalData(in, deviceId), deviceId, channel);
 				// resolveLocationMSG(in, deviceId);
 			} else if (STATUS_MSG == msgType) {
-				logger.info("心跳包");
+				
 				reply(channel, STATUS_MSG);
 			} else if (WARNING_MSG == msgType) {
 				logger.info("报警数据(UTC)");
 				reply(channel, WARNING_MSG);
 				sendMsg2Kafka(getOriginalData(in, deviceId), deviceId, channel);
 			} else if (CORRECT_TIME_MSG == msgType) {
-				logger.info("校时包");
+				
 				reply(channel, CORRECT_TIME_MSG);
 			} else if (VOLTAGE_MSG == msgType) {
 				logger.info("信息传输通用包");
@@ -211,6 +213,7 @@ public class YiTongGpsServerHandler extends HexBinaryAcceptanceHandlerAdapter {
 		byte[] deviceIdBytes = new byte[8];
 		in.readBytes(deviceIdBytes);
 		String deviceId = DatatypeConverter.printHexBinary(deviceIdBytes);
+		MDC.put(MDC_DEVICEID, deviceId);
 		// 回复和链接管理
 		String deviceIdInMap = channelDeviceMap.get(channel);
 		if (!deviceId.equals(deviceIdInMap)) {
@@ -264,6 +267,7 @@ public class YiTongGpsServerHandler extends HexBinaryAcceptanceHandlerAdapter {
 	}
 
 	private void reply(Channel channel, byte msgType) {
+		
 		ByteBuf buffer = Unpooled.buffer();
 		byte[] crcBytes = new byte[] { 0x05, msgType, 0x00, 0x05 };
 		int doCrc = CRCUtil.do_crc(65535, crcBytes);
@@ -275,7 +279,25 @@ public class YiTongGpsServerHandler extends HexBinaryAcceptanceHandlerAdapter {
 			@Override
 			public void operationComplete(Future<? super Void> future) throws Exception {
 				String deviceId = channelDeviceMap.get(channel);
-				logger.info("server reply to client device [{}] success:[{}] ",deviceId, DatatypeConverter.printHexBinary(bytes));
+				String type = "";
+				switch  (msgType) {
+				case STATUS_MSG:
+					  type = "心跳包";	
+					  break;
+				case WARNING_MSG:
+					  type = "报警数据(UTC)";	
+					  break;
+				case CORRECT_TIME_MSG:
+					 type = "校时包";
+					 break;
+				case LOGIN_MSG:
+					type = "登录包";
+					break;
+				 default:
+				    
+				    break;	 
+				}
+				logger.info("server reply [{}] to client device [{}] success:[{}] ",type,deviceId, DatatypeConverter.printHexBinary(bytes));
 			}
 		});
 	}

+ 1 - 1
src/main/resources/logback.xml

@@ -4,7 +4,7 @@
 	<property name="CONSOLE_PATTERN"
 		value="%gray(%d{MM-dd HH:mm:ss.SSS}) %highlight(%-5level) -- [%gray(%thread)] %cyan(%logger{26}:%line): %msg%n" />
 	<property name="FILE_PATTERN"
-		value="%d{MM-dd HH:mm:ss.SSS} %-5level -- [%thread] %logger{26}:%line: %msg%n" />
+		value="%d{MM-dd HH:mm:ss.SSS} %-5level -- [%thread] %logger{26}:[%X{deviceId}] %msg%n" />
 	<springProperty scope="context" name="logPath"
 		source="spring.profiles.active" />
 	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">