Browse Source

优化采集存储

master
mh 2 months ago
parent
commit
435d5c5378
  1. 35
      user-service/src/main/java/com/mh/user/job/DealDataJob.java
  2. 61
      user-service/src/main/java/com/mh/user/utils/AnalysisReceiveOrder485.java
  3. 101
      user-service/src/main/resources/application-dev.yml
  4. 4
      user-service/src/main/resources/application-prod.yml
  5. 101
      user-service/src/main/resources/application-test.yml
  6. 3
      user-service/src/main/resources/application.yml
  7. 64
      user-service/src/main/resources/log4j.properties
  8. 4
      user-service/src/main/resources/logback-spring.xml

35
user-service/src/main/java/com/mh/user/job/DealDataJob.java

@ -1,6 +1,5 @@
package com.mh.user.job; package com.mh.user.job;
import com.mh.user.netty.EchoServerHandler;
import com.mh.user.service.chillers.DealDataService; import com.mh.user.service.chillers.DealDataService;
import com.mh.user.utils.ExchangeStringUtil; import com.mh.user.utils.ExchangeStringUtil;
import com.mh.user.utils.SimpleWeather; import com.mh.user.utils.SimpleWeather;
@ -39,19 +38,19 @@ public class DealDataJob {
// dealDataService.proEnergy(curDate);//中央热水yyyy-MM-dd HH:mm:ss // dealDataService.proEnergy(curDate);//中央热水yyyy-MM-dd HH:mm:ss
String m=curDate.substring(15,16); String m=curDate.substring(15,16);
if (Integer.valueOf(m)==0){ if (Integer.parseInt(m)==0){
curDate=curDate.substring(0,16)+":00"; curDate=curDate.substring(0,16)+":00";
}else if(Integer.valueOf(m)==2){ }else if(Integer.parseInt(m)==2){
curDate=curDate.substring(0,16)+":00"; curDate=curDate.substring(0,16)+":00";
}else if(Integer.valueOf(m)==4){ }else if(Integer.parseInt(m)==4){
curDate=curDate.substring(0,16)+":00"; curDate=curDate.substring(0,16)+":00";
}else if(Integer.valueOf(m)==6){ }else if(Integer.parseInt(m)==6){
curDate=curDate.substring(0,16)+":00"; curDate=curDate.substring(0,16)+":00";
}else if(Integer.valueOf(m)==8){ }else if(Integer.parseInt(m)==8){
curDate=curDate.substring(0,16)+":00"; curDate=curDate.substring(0,16)+":00";
} }
dealDataService.proEnergyData(curDate);//中央空调yyyy-MM-dd HH:mm:ss dealDataService.proEnergyData(curDate);//中央空调yyyy-MM-dd HH:mm:ss
System.out.println("---------数据分析定时汇总,每二分钟!"+curDate); log.info("---------数据分析定时汇总,每二分钟!"+curDate);
} catch (Exception e) { } catch (Exception e) {
// e.printStackTrace(); // e.printStackTrace();
} }
@ -66,9 +65,9 @@ public class DealDataJob {
Date date=new Date(); Date date=new Date();
String curDate=sdf1.format(date); String curDate=sdf1.format(date);
dealDataService.proDeviceState(curDate); dealDataService.proDeviceState(curDate);
System.out.println("---------设备状态定时汇总,每十五分钟!"+curDate); log.info("---------设备状态定时汇总,每十五分钟!"+curDate);
} catch (Exception e) { } catch (Exception e) {
// e.printStackTrace(); log.error("设备状态定时汇总异常", e);
} }
} }
@ -79,15 +78,15 @@ public class DealDataJob {
public void proDataResult() { public void proDataResult() {
try { try {
String curDate= ExchangeStringUtil.dateTime(1,""); String curDate= ExchangeStringUtil.dateTime(1,"");
List<String> list=dealDataService.queryProjectId("3"); List<String> list=dealDataService.queryProjectId("1");
if (list.size()>0){ if (!list.isEmpty()){
for(String projectID:list){ for(String projectID:list){
dealDataService.proDataResult(curDate,projectID); //1珠江酒店,2广合,3广大 dealDataService.proDataResult(curDate,projectID); //1珠江酒店,2广合,3广大
} }
} }
System.out.println("---------能效监测定时汇总,每一分钟!"+curDate); log.info("---------能效监测定时汇总,每一分钟!"+curDate);
} catch (Exception e) { } catch (Exception e) {
// e.printStackTrace(); log.error("能效监测定时汇总异常", e);
} }
} }
@ -100,7 +99,7 @@ public class DealDataJob {
try { try {
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=new Date(); Date date=new Date();
Map<String, Object> map=simpleWeather.queryWeather("广州"); Map<String, Object> map= SimpleWeather.queryWeather("广州");
String curDate=sdf1.format(date); String curDate=sdf1.format(date);
String temperature=map.get("temperature").toString(); String temperature=map.get("temperature").toString();
String humidity=map.get("humidity").toString(); String humidity=map.get("humidity").toString();
@ -108,7 +107,7 @@ public class DealDataJob {
log.info(curDate+","+temperature+"℃,"+humidity+"%"); log.info(curDate+","+temperature+"℃,"+humidity+"%");
} catch (Exception e) { } catch (Exception e) {
// e.printStackTrace(); // e.printStackTrace();
log.error("调用获取环境温湿度接口失败!"); log.error("调用获取环境温湿度接口失败!", e);
} }
} }
@ -126,14 +125,14 @@ public class DealDataJob {
calendar.add(Calendar.DATE, -1);// 减少一天 calendar.add(Calendar.DATE, -1);// 减少一天
String curDate=sdf1.format(calendar.getTime()); String curDate=sdf1.format(calendar.getTime());
List<String> list=dealDataService.queryProjectId("2"); List<String> list=dealDataService.queryProjectId("2");
if (list.size()>0){ if (!list.isEmpty()){
for(String projectID:list){ for(String projectID:list){
dealDataService.proEnergyDaySum(curDate,projectID); dealDataService.proEnergyDaySum(curDate,projectID);
} }
} }
System.out.println("---------中央热水生产概况汇总,每一小时!"+curDate); log.info("---------中央热水生产概况汇总,每一小时!"+curDate);
} catch (Exception e) { } catch (Exception e) {
// e.printStackTrace(); log.error("中央热水生产概况定时汇总异常", e);
} }
} }

61
user-service/src/main/java/com/mh/user/utils/AnalysisReceiveOrder485.java

@ -46,6 +46,7 @@ public class AnalysisReceiveOrder485 {
ProjectInfoService projectInfoService=context.getBean(ProjectInfoService.class); ProjectInfoService projectInfoService=context.getBean(ProjectInfoService.class);
private final SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private final SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private final DecimalFormat df = new DecimalFormat("#.##");
//解析冷量表 //解析冷量表
public void analysisCloudOrder485(final String dataStr1,final DeviceCodeParamEntity deviceCodeParam) { public void analysisCloudOrder485(final String dataStr1,final DeviceCodeParamEntity deviceCodeParam) {
@ -471,20 +472,7 @@ public class AnalysisReceiveOrder485 {
data = ExchangeStringUtil.hexToDec(dataStr.substring(6, 8)); data = ExchangeStringUtil.hexToDec(dataStr.substring(6, 8));
try{ try{
// 赋值给dataResultCh // 赋值给dataResultCh
dataResultCh.setDeviceAddr(chillerAddr); initialDataResultCh(deviceCodeParam, dataResultCh, chillerAddr, dateStr, data);
dataResultCh.setDeviceType(deviceCodeParam.getDeviceType());
dataResultCh.setCurDate(sdf1.parse(dateStr));
dataResultCh.setCurValue(data);
dataResultCh.setDeviceAddr(deviceCodeParam.getRegisterAddr());
dataResultCh.setRegisterName(deviceCodeParam.getRegisterName());
dataResultCh.setGrade(deviceCodeParam.getGrade());
dataResultCh.setFunCode(deviceCodeParam.getFunCode());
dataResultCh.setProjectID(deviceCodeParam.getProjectID());
String projectName=projectInfoService.selectName(deviceCodeParam.getProjectID());
log.info("冷水机:" + chillerAddr + ",状态:" + data+",项目名称:"+projectName);
dataResultService.saveDataResultChiller(dataResultCh);
dataResultService.deleteDataResultNow(deviceCodeParam.getDeviceAddr(),deviceCodeParam.getDeviceType(),deviceCodeParam.getRegisterAddr(),deviceCodeParam.getProjectID());
log.info("冷水机保存成功!项目名称:"+projectName);
}catch (Exception e){ }catch (Exception e){
e.printStackTrace(); e.printStackTrace();
log.error("冷水机报错:{}", e); log.error("冷水机报错:{}", e);
@ -494,30 +482,17 @@ public class AnalysisReceiveOrder485 {
if (dataStr.length() == 14) { if (dataStr.length() == 14) {
if (deviceCodeParam.getDigit() == 1) { if (deviceCodeParam.getDigit() == 1) {
// 数据 // 数据
data = Double.toString(Integer.parseInt(ExchangeStringUtil.hexToDec(dataStr.substring(6, 10))) * 0.1); data = df.format(Integer.parseInt(ExchangeStringUtil.hexToDec(dataStr.substring(6, 10))) * 0.1);
} else if (deviceCodeParam.getDigit() == 2) { } else if (deviceCodeParam.getDigit() == 2) {
// 数据 // 数据
data = Double.toString(Integer.parseInt(ExchangeStringUtil.hexToDec(dataStr.substring(6, 10))) * 0.01); data = df.format(Integer.parseInt(ExchangeStringUtil.hexToDec(dataStr.substring(6, 10))) * 0.01);
} else { } else {
// 数据 // 数据
data = ExchangeStringUtil.hexToDec(dataStr.substring(6, 10)); data = ExchangeStringUtil.hexToDec(dataStr.substring(6, 10));
} }
try{ try{
// 赋值给dataResultCh // 赋值给dataResultCh
dataResultCh.setDeviceAddr(chillerAddr); initialDataResultCh(deviceCodeParam, dataResultCh, chillerAddr, dateStr, data);
dataResultCh.setDeviceType(deviceCodeParam.getDeviceType());
dataResultCh.setCurDate(sdf1.parse(dateStr));
// dataResultCh.setCurDate(dateStr);
dataResultCh.setCurValue(data);
dataResultCh.setRegisterAddr(deviceCodeParam.getRegisterAddr());
dataResultCh.setRegisterName(deviceCodeParam.getRegisterName());
dataResultCh.setGrade(deviceCodeParam.getGrade());
dataResultCh.setProjectID(deviceCodeParam.getProjectID());
String projectName=projectInfoService.selectName(deviceCodeParam.getProjectID());
log.info("冷水机:" + chillerAddr + ",读数:" + data+",项目名称:"+projectName);
dataResultService.saveDataResultChiller(dataResultCh);
dataResultService.deleteDataResultNow(deviceCodeParam.getDeviceAddr(),deviceCodeParam.getDeviceType(),deviceCodeParam.getRegisterAddr(),deviceCodeParam.getProjectID());
log.info("冷水机保存成功!项目名称:"+projectName);
}catch (Exception e){ }catch (Exception e){
e.printStackTrace(); e.printStackTrace();
log.error("冷水机保存异常:", e); log.error("冷水机保存异常:", e);
@ -531,6 +506,32 @@ public class AnalysisReceiveOrder485 {
} }
} }
/**
* 格式化数据
* @param deviceCodeParam
* @param dataResultCh
* @param chillerAddr
* @param dateStr
* @param data
* @throws ParseException
*/
private void initialDataResultCh(DeviceCodeParamEntity deviceCodeParam, DataResultChEntity dataResultCh, String chillerAddr, String dateStr, String data) throws ParseException {
dataResultCh.setDeviceAddr(chillerAddr);
dataResultCh.setDeviceType(deviceCodeParam.getDeviceType());
dataResultCh.setCurDate(sdf1.parse(dateStr));
dataResultCh.setCurValue(data);
dataResultCh.setRegisterAddr(deviceCodeParam.getRegisterAddr());
dataResultCh.setRegisterName(deviceCodeParam.getRegisterName());
dataResultCh.setGrade(deviceCodeParam.getGrade());
dataResultCh.setFunCode(deviceCodeParam.getFunCode());
dataResultCh.setProjectID(deviceCodeParam.getProjectID());
String projectName=projectInfoService.selectName(deviceCodeParam.getProjectID());
log.info("冷水机:" + chillerAddr + ",状态:" + data +",项目名称:"+projectName);
dataResultService.saveDataResultChiller(dataResultCh);
dataResultService.deleteDataResultNow(deviceCodeParam.getDeviceAddr(), deviceCodeParam.getDeviceType(), deviceCodeParam.getRegisterAddr(), deviceCodeParam.getProjectID());
log.info("冷水机保存成功!项目名称:"+projectName);
}
public void analysisChillersDDC(final String receiveData1) throws InterruptedException { public void analysisChillersDDC(final String receiveData1) throws InterruptedException {
// 去掉空格 // 去掉空格
// c0a8020a1f90ff04fb0000000100010200000300000400000500000600000700140800000901cb0a00000b00000c00000d00000e00000f0000100000110025120000130910cabc // c0a8020a1f90ff04fb0000000100010200000300000400000500000600000700140800000901cb0a00000b00000c00000d00000e00000f0000100000110025120000130910cabc

101
user-service/src/main/resources/application-dev.yml

@ -0,0 +1,101 @@
server:
port: 8766 #8764新珠江,8766广合科技,8767广大科技,8768珠江国际,8769保利山庄,8770东莞迎宾馆
spring:
application:
name: jnd-user-service
datasource:
name: druidDataSource
type: com.alibaba.druid.pool.DruidDataSource
druid:
#添加allowMultiQueries=true 在批量更新时才不会出错
url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=mh_esi;allowMultiQueries=true
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: sa
password: mh@803
filters: stat,wall,log4j,config
max-active: 100
initial-size: 1
max-wait: 60000
min-idle: 1
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: select 'x'
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-open-prepared-statements: 50
max-pool-prepared-statement-per-connection-size: 50
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
virtual-host: /jnd
listener:
direct:
prefetch: 2
simple:
prefetch: 2
# redis:
# database: 0
# host: 127.0.0.1
# port: 6379
# password: 123456
# timeout: 3000 #链接超时时间
# lettuce:
# pool:
# max-active: 8 #连接池最大连接数(使用负值没有限制)
# max-wait: -1 #最大等待时间,使用负值没有限制
# max-idle: 8 #最大空闲连接,使用负值没有限制
# min-idle: 0 #默认最小空闲连接 默认0
# redis配置
# cloud:
# config:
# uri: http://localhost:8769
# fail-fast: true
# profiles:
# active: pro
# consul:
# host: localhost
# port: 8500
# discovery:
# service-name: ${spring.application.name}
# application:
# name: user-service
# 开放健康检查接口
#management:
# endpoints:
# web:
# exposure:
# include: "*"
# endpoint:
# health:
# show-details: ALWAYS
#files:
# path: ${file-path:d:/files}
log:
level:
root: info
my: debug
file:
maxsize: 30MB
#设置将SQL语句打印到控制台 level后面是 mybatis接口目录
logging:
level:
com:
mh:
user:
mapper: DEBUG
file:
max-size: 30
path: logs/${spring.application.name}
##软件最后更新日期20230116

4
user-service/src/main/resources/bootstrap.yml → user-service/src/main/resources/application-prod.yml

@ -12,10 +12,6 @@ spring:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: jnd username: jnd
password: Mh@803tech password: Mh@803tech
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=mh_esi;allowMultiQueries=true
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
# username: sa
# password: mh@803
filters: stat,wall,log4j,config filters: stat,wall,log4j,config
max-active: 100 max-active: 100
initial-size: 1 initial-size: 1

101
user-service/src/main/resources/application-test.yml

@ -0,0 +1,101 @@
server:
port: 8766 #8764新珠江,8766广合科技,8767广大科技,8768珠江国际,8769保利山庄,8770东莞迎宾馆
spring:
application:
name: jnd-user-service
datasource:
name: druidDataSource
type: com.alibaba.druid.pool.DruidDataSource
druid:
#添加allowMultiQueries=true 在批量更新时才不会出错
url: jdbc:sqlserver://111.230.50.186:32012;DatabaseName=mh_jnd;allowMultiQueries=true
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: jnd
password: Mh@803tech
filters: stat,wall,log4j,config
max-active: 100
initial-size: 1
max-wait: 60000
min-idle: 1
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: select 'x'
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-open-prepared-statements: 50
max-pool-prepared-statement-per-connection-size: 50
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
virtual-host: /jnd
listener:
direct:
prefetch: 2
simple:
prefetch: 2
# redis:
# database: 0
# host: 127.0.0.1
# port: 6379
# password: 123456
# timeout: 3000 #链接超时时间
# lettuce:
# pool:
# max-active: 8 #连接池最大连接数(使用负值没有限制)
# max-wait: -1 #最大等待时间,使用负值没有限制
# max-idle: 8 #最大空闲连接,使用负值没有限制
# min-idle: 0 #默认最小空闲连接 默认0
# redis配置
# cloud:
# config:
# uri: http://localhost:8769
# fail-fast: true
# profiles:
# active: pro
# consul:
# host: localhost
# port: 8500
# discovery:
# service-name: ${spring.application.name}
# application:
# name: user-service
# 开放健康检查接口
#management:
# endpoints:
# web:
# exposure:
# include: "*"
# endpoint:
# health:
# show-details: ALWAYS
#files:
# path: ${file-path:d:/files}
log:
level:
root: info
my: debug
file:
maxsize: 30MB
#设置将SQL语句打印到控制台 level后面是 mybatis接口目录
logging:
level:
com:
mh:
user:
mapper: DEBUG
file:
max-size: 30
path: logs/${spring.application.name}
##软件最后更新日期20230116

3
user-service/src/main/resources/application.yml

@ -0,0 +1,3 @@
spring:
profiles:
active: dev

64
user-service/src/main/resources/log4j.properties

@ -1,32 +1,32 @@
### set log levels DEBUG ### #### set log levels DEBUG ###
log4j.rootLogger = INFO,CONSOLE,infoFile, errorFile #log4j.rootLogger = INFO,CONSOLE,infoFile, errorFile
LocationInfo=true #LocationInfo=true
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender #log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
#log4j.appender.CONSOLE.Encoding=UTF-8 ##log4j.appender.CONSOLE.Encoding=UTF-8
log4j.appender.CONSOLE.Target = System.out #log4j.appender.CONSOLE.Target = System.out
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout #log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p]:%m %x %n #log4j.appender.CONSOLE.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p]:%m %x %n
#
log4j.appender.infoFile = org.apache.log4j.DailyRollingFileAppender #log4j.appender.infoFile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.infoFile.Threshold = INFO #log4j.appender.infoFile.Threshold = INFO
log4j.appender.infoFile.File = ./logs/log.log #log4j.appender.infoFile.File = ./logs/log.log
log4j.appender.infoFile.DatePattern ='.'yyyy-MM-dd'.log' #log4j.appender.infoFile.DatePattern ='.'yyyy-MM-dd'.log'
log4j.appender.infoFile.Append=true #log4j.appender.infoFile.Append=true
log4j.appender.infoFile.layout = org.apache.log4j.PatternLayout #log4j.appender.infoFile.layout = org.apache.log4j.PatternLayout
log4j.appender.infoFile.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p]:%m %x %n #log4j.appender.infoFile.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p]:%m %x %n
#
log4j.appender.errorFile = org.apache.log4j.DailyRollingFileAppender #log4j.appender.errorFile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorFile.Threshold = ERROR #log4j.appender.errorFile.Threshold = ERROR
log4j.appender.errorFile.File = ./logs/error.log #log4j.appender.errorFile.File = ./logs/error.log
log4j.appender.errorFile.DatePattern ='.'yyyy-MM-dd'.log' #log4j.appender.errorFile.DatePattern ='.'yyyy-MM-dd'.log'
log4j.appender.errorFile.Append=true #log4j.appender.errorFile.Append=true
log4j.appender.errorFile.layout = org.apache.log4j.PatternLayout #log4j.appender.errorFile.layout = org.apache.log4j.PatternLayout
log4j.appender.errorFile.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p]:%m %x %n #log4j.appender.errorFile.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p]:%m %x %n
#
#log4j.appender.debugfile = org.apache.log4j.DailyRollingFileAppender ##log4j.appender.debugfile = org.apache.log4j.DailyRollingFileAppender
#log4j.appender.debugfile.Threshold = DEBUG ##log4j.appender.debugfile.Threshold = DEBUG
#log4j.appender.debugfile.File = ./logs/debug ##log4j.appender.debugfile.File = ./logs/debug
#log4j.appender.debugfile.DatePattern = yyyy-MM-dd'.log' ##log4j.appender.debugfile.DatePattern = yyyy-MM-dd'.log'
#log4j.appender.debugfile.Append=true ##log4j.appender.debugfile.Append=true
#log4j.appender.debugfile.layout = org.apache.log4j.PatternLayout ##log4j.appender.debugfile.layout = org.apache.log4j.PatternLayout
#log4j.appender.debugfile.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p]:%m %x %n ##log4j.appender.debugfile.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p]:%m %x %n

4
user-service/src/main/resources/logback-spring.xml

@ -3,7 +3,7 @@
<contextName>logs</contextName> <contextName>logs</contextName>
<!-- 日志位置 不能使用相对路径?只能使用绝对路径--> <!-- 日志位置 不能使用相对路径?只能使用绝对路径-->
<property name="log.path" value="${LOG_PATH:-.}" /> <property name="log.path" value="${LOG_PATH:-.}" />
<!-- <property name="log.path" value="D:/NBWater/Logs/nbcontrol" />--> <!-- <property name="log.path" value="D:/NBWater/Logs/nbcontrol" />-->
<!-- 日志保留时长 --> <!-- 日志保留时长 -->
<property name="log.maxHistory" value="15" /> <property name="log.maxHistory" value="15" />
<!-- 控制台格式化及颜色 --> <!-- 控制台格式化及颜色 -->
@ -70,7 +70,7 @@
<root level="error"> <root level="error">
<appender-ref ref="file_error" /> <appender-ref ref="file_error" />
</root> </root>
<!-- 日志类型为info时,输出到控制台 --> <!-- 日志类型为debug时,输出到控制台 -->
<root level="info"> <root level="info">
<appender-ref ref="console" /> <appender-ref ref="console" />
</root> </root>

Loading…
Cancel
Save