基础版 优化

merge-requests/3/head
qiushui 4 years ago
parent af5dcc45a6
commit a394004c66

@ -55,11 +55,6 @@
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId> <artifactId>commons-lang3</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
</dependencies> </dependencies>
<profiles> <profiles>

@ -28,11 +28,11 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId> <artifactId>spring-boot-starter-cache</artifactId>
</dependency> </dependency>
<dependency> <!-- <dependency>-->
<groupId>com.google.guava</groupId> <!-- <groupId>com.google.guava</groupId>-->
<artifactId>guava</artifactId> <!-- <artifactId>guava</artifactId>-->
<version>18.0</version> <!-- <version>18.0</version>-->
</dependency> <!-- </dependency>-->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>

@ -29,6 +29,8 @@ public class ConfigProperties {
private String userUrl; private String userUrl;
private KSEC ksec;
@Data @Data
public static class CameraConfig{ public static class CameraConfig{
@ -52,4 +54,10 @@ public class ConfigProperties {
private String mediaPath; private String mediaPath;
private String mp4Path; private String mp4Path;
} }
@Data
public static class KSEC{
private String ip;
private Integer port;
}
} }

@ -119,10 +119,4 @@ public class StockController {
} }
@ApiOperation(value = "currentPosition")
@RequestMapping(value = "/currentPosition", method = RequestMethod.GET)
public Result currentPosition(Integer cameraId,Integer ptzId) {
JoywarePtzControlModule.turn360C8(cameraId,ptzId);
return Result.success();
}
} }

@ -20,6 +20,8 @@ public class Category {
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Integer id; private Integer id;
private String code;
private String name; private String name;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")

@ -1,24 +0,0 @@
package com.zhehekeji.web.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDateTime;
/**
*
*/
@Data
@TableName("ksec_up_pc_info")
public class KsecUpPcInfo {
private Integer id;
private String ip;
private Integer port;
private String name;
private LocalDateTime createTime;
}

@ -19,6 +19,9 @@ public class Stock {
private String orderNum; private String orderNum;
@ApiModelProperty("条码")
private String code;
@ApiModelProperty("品规名称") @ApiModelProperty("品规名称")
private String category; private String category;

@ -6,6 +6,6 @@ import org.apache.ibatis.annotations.Select;
public interface CategoryMapper extends BaseMapper<Category> { public interface CategoryMapper extends BaseMapper<Category> {
@Select(" select * from category where name = #{name} limit 1") @Select(" select * from category where code = #{code} limit 1")
Category getByName(String name); Category getByCode(String code);
} }

@ -1,7 +0,0 @@
package com.zhehekeji.web.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zhehekeji.web.entity.KsecUpPcInfo;
public interface KsecUpPcMapper extends BaseMapper<KsecUpPcInfo> {
}

@ -6,8 +6,8 @@ import lombok.Data;
@Data @Data
public class StockExcel { public class StockExcel {
@ExcelProperty(index = 0, value = "品规") @ExcelProperty(index = 0, value = "条码")
private String category; private String code;
@ExcelProperty(index = 1, value = "数量") @ExcelProperty(index = 1, value = "数量")
private Integer count; private Integer count;

@ -0,0 +1,48 @@
package com.zhehekeji.web.service;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.zhehekeji.web.entity.CameraIOConfig;
import com.zhehekeji.web.entity.Category;
import com.zhehekeji.web.mapper.CameraIOConfigMapper;
import com.zhehekeji.web.mapper.CategoryMapper;
import com.zhehekeji.web.pojo.camera.IOImport;
import lombok.extern.slf4j.Slf4j;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
* IO
*/
@Slf4j
public class CategoryImportListener extends AnalysisEventListener<Category> {
private CategoryMapper categoryMapper;
public CategoryImportListener(CategoryMapper categoryMapper){
this.categoryMapper = categoryMapper;
}
@Override
public void invoke(Category category, AnalysisContext analysisContext) {
Category old = categoryMapper.getByCode(category.getCode());
if(old == null){
category.setUpdateTime(LocalDateTime.now());
categoryMapper.insert(category);
}else {
//更改名字
old.setName(category.getName());
old.setUpdateTime(LocalDateTime.now());
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}

@ -1,6 +1,7 @@
package com.zhehekeji.web.service; package com.zhehekeji.web.service;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.builder.ExcelReaderBuilder;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
@ -8,6 +9,7 @@ import com.github.pagehelper.PageInfo;
import com.zhehekeji.core.util.Assert; import com.zhehekeji.core.util.Assert;
import com.zhehekeji.web.entity.Category; import com.zhehekeji.web.entity.Category;
import com.zhehekeji.web.mapper.CategoryMapper; import com.zhehekeji.web.mapper.CategoryMapper;
import com.zhehekeji.web.pojo.camera.IOImport;
import com.zhehekeji.web.pojo.category.CategoryExcel; import com.zhehekeji.web.pojo.category.CategoryExcel;
import com.zhehekeji.web.pojo.category.CategoryModel; import com.zhehekeji.web.pojo.category.CategoryModel;
import com.zhehekeji.web.pojo.category.PageSearch; import com.zhehekeji.web.pojo.category.PageSearch;
@ -76,6 +78,11 @@ public class CategoryService {
return category.getId(); return category.getId();
} }
// public void importExcel(MultipartFile file) throws IOException {
// EasyExcel.read(file.getInputStream(), Category.class, new CategoryImportListener(categoryMapper)).sheet().doRead();
// return;
// }
public Integer importExcel(MultipartFile file) throws IOException { public Integer importExcel(MultipartFile file) throws IOException {
XSSFWorkbook wb = new XSSFWorkbook(file.getInputStream()); XSSFWorkbook wb = new XSSFWorkbook(file.getInputStream());
XSSFSheet sheet = wb.getSheetAt(0); XSSFSheet sheet = wb.getSheetAt(0);
@ -97,36 +104,28 @@ public class CategoryService {
int columns = firstRow.getLastCellNum(); int columns = firstRow.getLastCellNum();
for (int i = 1; i < rows; i++) { for (int i = 1; i < rows; i++) {
XSSFRow row = sheet.getRow(i); XSSFRow row = sheet.getRow(i);
StringBuffer category = new StringBuffer();
for(int j = 0;j<columns;j++){
XSSFCell cell = row.getCell(j); Category category = new Category();
XSSFCell cell = row.getCell(0);
if(cell != null){ if(cell != null){
String name = cell.getStringCellValue(); String name = cell.getStringCellValue();
if(!StringUtils.isEmpty(name)) { category.setCode(name);
category.append(name).append("-");
}
}
}
if(category.length() > 0){
category.deleteCharAt(category.length()-1);
}
insert(category.toString());
}
} }
XSSFCell cell1 = row.getCell(1);
public Integer insert(String name){ if(cell1 != null){
Category category = categoryMapper.getByName(name); String name = cell.getStringCellValue();
if(category == null){
category = new Category();
category.setName(name); category.setName(name);
}
Category old = categoryMapper.getByCode(category.getCode());
if(old == null){
category.setUpdateTime(LocalDateTime.now()); category.setUpdateTime(LocalDateTime.now());
try {
categoryMapper.insert(category); categoryMapper.insert(category);
}catch (DuplicateKeyException e){ }else {
log.warn("品规已存在:{}",name); //更改名字
old.setName(category.getName());
old.setUpdateTime(LocalDateTime.now());
categoryMapper.updateById(old);
} }
} }
return category.getId();
} }
} }

@ -2,17 +2,14 @@ package com.zhehekeji.web.service;
import com.zhehekeji.web.config.ConfigProperties; import com.zhehekeji.web.config.ConfigProperties;
import com.zhehekeji.web.entity.Camera; import com.zhehekeji.web.entity.Camera;
import com.zhehekeji.web.entity.KsecUpPcInfo;
import com.zhehekeji.web.entity.Street; import com.zhehekeji.web.entity.Street;
import com.zhehekeji.web.lib.*; import com.zhehekeji.web.lib.*;
import com.zhehekeji.web.lib.joyware.NetSDKLib; import com.zhehekeji.web.lib.joyware.NetSDKLib;
import com.zhehekeji.web.mapper.CameraMapper; import com.zhehekeji.web.mapper.CameraMapper;
import com.zhehekeji.web.mapper.KsecUpPcMapper;
import com.zhehekeji.web.mapper.StreetMapper; import com.zhehekeji.web.mapper.StreetMapper;
import com.zhehekeji.web.service.ksec.KsecNettyClient; import com.zhehekeji.web.service.ksec.KsecNettyClient;
import com.zhehekeji.web.service.robotic.NettyClient; import com.zhehekeji.web.service.robotic.NettyClient;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner; import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -44,9 +41,6 @@ public class InitService implements ApplicationRunner {
@Resource @Resource
private ConfigProperties configProperties; private ConfigProperties configProperties;
@Resource
private KsecUpPcMapper upPcMapper;
@Override @Override
public void run(ApplicationArguments args) throws Exception { public void run(ApplicationArguments args) throws Exception {
//球机登录 //球机登录
@ -74,7 +68,7 @@ public class InitService implements ApplicationRunner {
}else if(configProperties.getServerMode() == 1){ }else if(configProperties.getServerMode() == 1){
log.info("KESC JSON MODE"); log.info("KESC JSON MODE");
// 昆船协议 // 昆船协议
KsecUpPcInfo ksec = upPcMapper.selectById(1); ConfigProperties.KSEC ksec = configProperties.getKsec();
if(ksec != null){ if(ksec != null){
StreetConn.init(1,"ksec"); StreetConn.init(1,"ksec");
try { try {

@ -63,7 +63,7 @@ public class PlcService {
} }
/** /**
* * robotic plcIdplcId,plcIdsrmNumber
* @param plcOrderInfo * @param plcOrderInfo
* @param plcId * @param plcId
*/ */

@ -8,6 +8,8 @@ import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.DelimiterBasedFrameDecoder; import io.netty.handler.codec.DelimiterBasedFrameDecoder;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.charset.Charset; import java.nio.charset.Charset;
@ -17,6 +19,8 @@ import java.nio.charset.Charset;
@Slf4j @Slf4j
public class KsecDecoder extends DelimiterBasedFrameDecoder { public class KsecDecoder extends DelimiterBasedFrameDecoder {
private static final Logger tcpLogger = LoggerFactory.getLogger("tcp");
private PlcService plcService; private PlcService plcService;
public KsecDecoder(int maxFrameLength, ByteBuf delimiter, PlcService plcService) { public KsecDecoder(int maxFrameLength, ByteBuf delimiter, PlcService plcService) {
@ -32,6 +36,7 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
// 去掉首尾标识符 // 去掉首尾标识符
body = body.substring(1, body.length()); body = body.substring(1, body.length());
KsecInfo ksecInfo = JSONObject.parseObject(body, KsecInfo.class); KsecInfo ksecInfo = JSONObject.parseObject(body, KsecInfo.class);
tcpLogger.info("info:{}",body);
log.info("receieve info:{}", ksecInfo); log.info("receieve info:{}", ksecInfo);
KsecDataInfo dataInfo = ksecInfo.getData(); KsecDataInfo dataInfo = ksecInfo.getData();
PlcOrderInfo plcOrderInfo = null; PlcOrderInfo plcOrderInfo = null;

@ -1,8 +1,7 @@
package com.zhehekeji.web.service.ksec; package com.zhehekeji.web.service.ksec;
import com.zhehekeji.web.entity.KsecUpPcInfo; import com.zhehekeji.web.config.ConfigProperties;
import com.zhehekeji.web.mapper.KsecUpPcMapper;
import com.zhehekeji.web.service.PlcService; import com.zhehekeji.web.service.PlcService;
import io.netty.bootstrap.Bootstrap; import io.netty.bootstrap.Bootstrap;
import io.netty.channel.Channel; import io.netty.channel.Channel;
@ -23,7 +22,7 @@ public class KsecNettyClient {
@Resource @Resource
private PlcService plcService; private PlcService plcService;
@Resource @Resource
private KsecUpPcMapper ksecUpPcMapper; private ConfigProperties configProperties;
/** /**
* *
@ -32,7 +31,7 @@ public class KsecNettyClient {
private static Channel channel; private static Channel channel;
public void createClient(KsecUpPcInfo ksec){ public void createClient(ConfigProperties.KSEC ksec){
if (StringUtils.isEmpty(ksec.getIp()) || ksec.getPort() == null) { if (StringUtils.isEmpty(ksec.getIp()) || ksec.getPort() == null) {
return; return;
} }
@ -59,7 +58,7 @@ public class KsecNettyClient {
public void reconnect(Integer upId) { public void reconnect(Integer upId) {
Boolean isConnected = false; Boolean isConnected = false;
int num = 0; int num = 0;
KsecUpPcInfo ksec = ksecUpPcMapper.selectById(upId); ConfigProperties.KSEC ksec = configProperties.getKsec();
if (ksec == null) { if (ksec == null) {
log.error("reconnect ,upPc is null ,id:{}", upId); log.error("reconnect ,upPc is null ,id:{}", upId);
return; return;
@ -78,7 +77,7 @@ public class KsecNettyClient {
if (isConnected) { if (isConnected) {
log.info("plc reconnect success"); log.info("plc reconnect success");
} else { } else {
log.error("plc reconnect error .upPcId:{},reconnect num:{},name:{},ip:{},port:{}", upId, num, ksec.getName(), ksec.getIp(), ksec.getPort()); log.error("plc reconnect error .upPcId:{},reconnect num:{},ip:{},port:{}", upId, num, ksec.getIp(), ksec.getPort());
} }
} }

@ -7,6 +7,8 @@ import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.FixedLengthFrameDecoder; import io.netty.handler.codec.FixedLengthFrameDecoder;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.charset.Charset; import java.nio.charset.Charset;
@ -14,6 +16,8 @@ import java.nio.charset.Charset;
@Slf4j @Slf4j
public class ProtocolDecoder extends FixedLengthFrameDecoder { public class ProtocolDecoder extends FixedLengthFrameDecoder {
private static final Logger tcpLogger = LoggerFactory.getLogger("tcp");
private PlcService plcService; private PlcService plcService;
public ProtocolDecoder(PlcService plcService) { public ProtocolDecoder(PlcService plcService) {
@ -85,7 +89,8 @@ public class ProtocolDecoder extends FixedLengthFrameDecoder {
//String barCodeSys = String.valueOf(b5)+b6+b7+b8; //String barCodeSys = String.valueOf(b5)+b6+b7+b8;
String barCodeSys = new String(bytesBarNumSys, "UTF-8"); String barCodeSys = new String(bytesBarNumSys, "UTF-8");
if(!type.equals(HEART)){ if(!type.equals(HEART)){
log.info("plcId:{},原始信号:{}", plcId, signal); //log.info("plcId:{},原始信号:{}", plcId, signal);
tcpLogger.info("plcId:{},原始信号:{}", plcId, signal);
} }
if (type.equals(HEART)) { if (type.equals(HEART)) {
//心跳 //心跳

@ -1,8 +1,3 @@
logging:
level:
com.zhehekeji: debug
org.springframework.web: info
root: info
spring: spring:
datasource: datasource:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
@ -22,13 +17,6 @@ spring:
url: jdbc:mysql://115.236.65.98:12004/lia_duoji?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 url: jdbc:mysql://115.236.65.98:12004/lia_duoji?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
username: root username: root
validationQuery: SELECT 1 FROM DUAL validationQuery: SELECT 1 FROM DUAL
zhehe:
common:
redis:
prefix: spring
filter:
enable: true
postToken: w89euijon2&UHBTY$%huni34ri
# --------本服务端口号 # --------本服务端口号
server: server:
port: 8099 port: 8099
@ -48,8 +36,11 @@ cameraConfig:
savePath: savePath:
mediaPath: d:\\data\media\ mediaPath: d:\\data\media\
mp4Path: d:\\data\mp4\ mp4Path: d:\\data\mp4\
# ------------服务端类型 0TCP(罗伯泰克) 1:JSON昆船 # ------------服务端类型 0TCP(罗伯泰克) 1:KSEC(JSON)(昆船)
serverMode: 1 serverMode: 1
ksec:
ip: 127.0.0.1
port: 3000
# ------------ 实时视频流 全部页面的格式 行列数量 # ------------ 实时视频流 全部页面的格式 行列数量
videoStyleConfig: videoStyleConfig:
videoStyleRow: 2 videoStyleRow: 2

@ -1,8 +1,3 @@
logging:
level:
com.zhehekeji: debug
org.springframework.web: info
root: info
spring: spring:
datasource: datasource:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
@ -22,13 +17,6 @@ spring:
url: jdbc:mysql://115.236.65.98:12004/lia_duoji?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 url: jdbc:mysql://115.236.65.98:12004/lia_duoji?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
username: root username: root
validationQuery: SELECT 1 FROM DUAL validationQuery: SELECT 1 FROM DUAL
zhehe:
common:
redis:
prefix: spring
filter:
enable: true
postToken: w89euijon2&UHBTY$%huni34ri
# --------本服务端口号 # --------本服务端口号
server: server:
port: 8099 port: 8099
@ -37,19 +25,28 @@ server:
userUrl: http://115.236.65.98:11001 userUrl: http://115.236.65.98:11001
# ----------- # -----------
# ----默认摄像头的连接信息 # ----默认摄像头的连接信息
cameraConfig:
# ------------球機選擇--- 0:中威 1海康
cameraType: 0
cameraPassword: admin123 cameraPassword: admin123
cameraUser: admin cameraUser: admin
cameraPort: 37777 cameraPort: 37777
# ------------ # ------------
# -----图片 mp4下载地址 # -----图片 mp4下载地址
savePath:
mediaPath: d:\\data\media\ mediaPath: d:\\data\media\
mp4Path: d:\\data\mp4\ mp4Path: d:\\data\mp4\
# ------------球機選擇--- 0:中威 1海康 # ------------服务端类型 0TCP(罗伯泰克) 1:KSEC(JSON)(昆船)
cameraType: 1
# ------------服务端类型 0TCP 1:JSON
serverMode: 1 serverMode: 1
ksec:
ip: 127.0.0.1
port: 3000
# ------------ 实时视频流 全部页面的格式 行列数量 # ------------ 实时视频流 全部页面的格式 行列数量
videoStyleConfig:
videoStyleRow: 2 videoStyleRow: 2
videoStyleColumn: 2 videoStyleColumn: 2
# ------------球机m3u8默认地址 %d是球机数据库id如果数据库没有就使用此默认值 # ------------球机m3u8默认地址 %d是球机数据库id如果数据库没有就使用此默认值
mediaServer: http://127.0.0.1:9080/hls/camera%d.m3u8 mediaServer: http://127.0.0.1:9080/hls/camera%d.m3u8
rtcServer:
rtcServerIp: 127.0.0.1
rtcServerPort: 8083

@ -1,8 +1,3 @@
logging:
level:
com.zhehekeji: debug
org.springframework.web: info
root: info
spring: spring:
datasource: datasource:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
@ -22,13 +17,6 @@ spring:
url: jdbc:mysql://115.236.65.98:12004/lia_duoji?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 url: jdbc:mysql://115.236.65.98:12004/lia_duoji?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
username: root username: root
validationQuery: SELECT 1 FROM DUAL validationQuery: SELECT 1 FROM DUAL
zhehe:
common:
redis:
prefix: spring
filter:
enable: true
postToken: w89euijon2&UHBTY$%huni34ri
# --------本服务端口号 # --------本服务端口号
server: server:
port: 8099 port: 8099
@ -37,19 +25,28 @@ server:
userUrl: http://115.236.65.98:11001 userUrl: http://115.236.65.98:11001
# ----------- # -----------
# ----默认摄像头的连接信息 # ----默认摄像头的连接信息
cameraConfig:
# ------------球機選擇--- 0:中威 1海康
cameraType: 0
cameraPassword: admin123 cameraPassword: admin123
cameraUser: admin cameraUser: admin
cameraPort: 37777 cameraPort: 37777
# ------------ # ------------
# -----图片 mp4下载地址 # -----图片 mp4下载地址
savePath:
mediaPath: d:\\data\media\ mediaPath: d:\\data\media\
mp4Path: d:\\data\mp4\ mp4Path: d:\\data\mp4\
# ------------球機選擇--- 0:中威 1海康 # ------------服务端类型 0TCP(罗伯泰克) 1:KSEC(JSON)(昆船)
cameraType: 1
# ------------服务端类型 0TCP 1:JSON
serverMode: 1 serverMode: 1
ksec:
ip: 127.0.0.1
port: 3000
# ------------ 实时视频流 全部页面的格式 行列数量 # ------------ 实时视频流 全部页面的格式 行列数量
videoStyleConfig:
videoStyleRow: 2 videoStyleRow: 2
videoStyleColumn: 2 videoStyleColumn: 2
# ------------球机m3u8默认地址 %d是球机数据库id如果数据库没有就使用此默认值 # ------------球机m3u8默认地址 %d是球机数据库id如果数据库没有就使用此默认值
mediaServer: http://127.0.0.1:9080/hls/camera%d.m3u8 mediaServer: http://127.0.0.1:9080/hls/camera%d.m3u8
rtcServer:
rtcServerIp: 127.0.0.1
rtcServerPort: 8083

@ -2,7 +2,7 @@ spring:
profiles: profiles:
active: @profileActive@ active: @profileActive@
application: application:
name: springbootstart-web name: duoji-web
mvc: mvc:
#视图路径配置 #视图路径配置
view: view:
@ -21,3 +21,12 @@ mapper:
identity: MYSQL identity: MYSQL
not-empty: true not-empty: true
style: normal style: normal
zhehe:
common:
redis:
prefix: spring
filter:
enable: true
postToken: w89euijon2&UHBTY$%huni34ri
logging:
config: classpath:logback-spring.xml

@ -2,13 +2,16 @@
<configuration> <configuration>
<property name="LOG_HOME" value=".log"></property> <property name="LOG_HOME" value=".log"></property>
<springProperty scope="context" name="logName" source="spring.application.name" defaultValue="localhost.log"/> <springProperty scope="context" name="logName" source="spring.application.name" defaultValue="localhost.log"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!--自定义控制台日志格式-->
<encoder> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<pattern>%d %p (%file:%line\)- %m%n</pattern> <encoder charset="UTF-8">
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n</pattern>
<charset>UTF-8</charset> <charset>UTF-8</charset>
</encoder> </encoder>
</appender> </appender>
<appender name="FILEINFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--系统INFO级别日志-滚动记录日志-->
<appender name="SYS_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_HOME}/${logName}-info.log</File> <File>${LOG_HOME}/${logName}-info.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${logName}-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <fileNamePattern>${LOG_HOME}/${logName}-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
@ -29,7 +32,8 @@
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<appender name="FILEWARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<appender name="SYS_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_HOME}/${logName}-warn.log</File> <File>${LOG_HOME}/${logName}-warn.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${logName}-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <fileNamePattern>${LOG_HOME}/${logName}-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
@ -45,12 +49,14 @@
<charset>UTF-8</charset> <charset>UTF-8</charset>
</encoder> </encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>warn</level> <level>WARN</level>
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--系统ERROR级别日志-滚动记录日志-->
<appender name="SYS_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_HOME}/${logName}-error.log</File> <File>${LOG_HOME}/${logName}-error.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${logName}-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <fileNamePattern>${LOG_HOME}/${logName}-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
@ -72,29 +78,41 @@
</filter> </filter>
</appender> </appender>
<springProfile name="test"> <!--不同业务逻辑的日志打印到不同文件见下面2种业务日志-->
<root level="INFO">
<appender-ref ref="FILEINFO"/>
<appender-ref ref="FILEWARN"/>
<appender-ref ref="FILEERROR"/>
<appender-ref ref="STDOUT"/>
</root>
</springProfile>
<springProfile name="dev">
<root level="INFO">
<appender-ref ref="FILEINFO"/>
<appender-ref ref="FILEWARN"/>
<appender-ref ref="FILEERROR"/>
<appender-ref ref="STDOUT"/>
</root>
</springProfile>
<springProfile name="prod"> <!--业务business-1日志-->
<appender name="tcpAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_HOME}/${logName}-tcp.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${logName}-tcp-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>
%d %p (%file:%line\)- %m%n
</pattern>
<charset>UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- additivity属性为false表示此logger的打印信息不再向上级传递(注该值默认为truelogger的日志信息会依次向上级传递最高级logger为root如果不加则至少打印2次本身一次root一次)-->
<logger name="tcp" additivity="false" level="INFO">
<appender-ref ref="tcpAppender"/>
</logger>
<!--info和error分开打印ERROR > WARN > INFO > DEBUG > TRACE-->
<root level="INFO"> <root level="INFO">
<appender-ref ref="FILEINFO"/> <appender-ref ref="CONSOLE"/>
<appender-ref ref="FILEWARN"/> <appender-ref ref="SYS_INFO"/>
<appender-ref ref="FILEERROR"/> <appender-ref ref="SYS_ERROR"/>
<appender-ref ref="STDOUT"/>
</root> </root>
</springProfile>
</configuration> </configuration>
Loading…
Cancel
Save