提交 3050b4a7 编写于 作者: minghao.wu's avatar minghao.wu

Merge branch 'dev_phase3' into release

......@@ -12,7 +12,7 @@
<groupId>com.pica.cloud.online.exam</groupId>
<artifactId>pica-cloud-analysis-common</artifactId>
<name>pica-cloud-analysis-common</name>
<version>1.0.9</version>
<version>1.1.0</version>
<packaging>jar</packaging>
<properties>
......
......@@ -2,7 +2,7 @@ package com.pica.cloud.online.exam.analysis.common;
import com.alibaba.fastjson.JSON;
import com.pica.cloud.foundation.redis.RedisClient;
import com.pica.cloud.foundation.utils.entity.PICAUser;
import com.pica.cloud.foundation.utils.entity.PicaUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -19,15 +19,15 @@ public class CommonUtils {
* @param map
* @return
*/
public static PICAUser getUser(Map<String, String> map) {
public static PicaUser getUser(Map<String, String> map) {
if (map.isEmpty()) {
return null;
}
return JSON.parseObject(JSON.toJSONString(map), PICAUser.class);
return JSON.parseObject(JSON.toJSONString(map), PicaUser.class);
}
public static PICAUser getUserByToken(RedisClient client, String token) {
PICAUser picaUser = null;
public static PicaUser getUserByToken(RedisClient client, String token) {
PicaUser picaUser = null;
try {
picaUser = CommonUtils.getUser(client.getToken(token));
} catch (Exception e) {
......
......@@ -12,7 +12,7 @@
<dependency>
<groupId>com.pica.cloud.foundation</groupId>
<artifactId>pica-cloud-utils</artifactId>
<version>1.0.5-SNAPSHOT</version>
<version>1.0.7-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
......
......@@ -28,10 +28,22 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
......@@ -138,14 +150,14 @@
<dependency>
<groupId>com.pica.cloud.online.exam</groupId>
<artifactId>pica-cloud-analysis-common</artifactId>
<version>1.0.9</version>
<version>1.1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.pica.cloud.foundation</groupId>
<artifactId>pica-cloud-utils</artifactId>
<version>1.0.6-SNAPSHOT</version>
<version>1.0.7-SNAPSHOT</version>
</dependency>
</dependencies>
......
......@@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.pica.cloud.foundation.entity.PicaResponse;
import com.pica.cloud.foundation.entity.PicaResultCode;
import com.pica.cloud.foundation.redis.RedisClient;
import com.pica.cloud.foundation.utils.entity.PICAUser;
import com.pica.cloud.foundation.utils.entity.PicaUser;
import com.pica.cloud.online.exam.analysis.common.CommonUtils;
import com.pica.cloud.online.exam.analysis.common.constants.CommonConstants;
import com.pica.cloud.online.exam.analysis.common.dto.*;
......@@ -21,6 +21,8 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javassist.bytecode.ExceptionsAttribute;
import org.omg.CORBA.INTERNAL;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.web.bind.annotation.*;
......@@ -38,6 +40,8 @@ import java.util.List;
@RequestMapping("/")
@Api(value = "题目分析接口", description = "查看活动及详情,用户点赞、医生回复")
public class AnalysisController {
private static Logger logger = LoggerFactory.getLogger(AnalysisController.class);
@Autowired
private RedisClient redisClient;
......@@ -88,7 +92,7 @@ public class AnalysisController {
try {
CHCAnalysisDto analysisDto = analysisService.getCHCAnalysisDtoById(id);
PICAUser user = null;
PicaUser user = null;
if (token != null) {
user = CommonUtils.getUserByToken(redisClient, token);
......@@ -145,7 +149,7 @@ public class AnalysisController {
@ApiOperation(value = "获取某一轮的题目", response = PicaResponse.class)
@RequestMapping(value = "/roundDetail/{roundId}", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
public PicaResponse<RoundExamTitleDto> getRoundDetail(@PathVariable("roundId") Integer roundId) {
System.out.println("roundDetail: roundId" + roundId);
logger.info("roundDetail: roundId" + roundId);
PicaResponse.Builder<RoundExamTitleDto> builder = new PicaResponse.Builder<>();
......@@ -167,7 +171,7 @@ public class AnalysisController {
@RequestMapping(value = "/replyList/{examTitleId}", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
public PicaResponse<ExamTitleReplyDto> getReplyList(@PathVariable("examTitleId") Integer examTitleId,
@RequestHeader(required = false) String token) {
PICAUser user = null;
PicaUser user = null;
if (token != null) {
user = CommonUtils.getUserByToken(redisClient, token);
......@@ -230,7 +234,7 @@ public class AnalysisController {
@RequestMapping(value = "/replyDetail/{replyId}", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
public PicaResponse<ExamTitleReplyDetailDto> getReplyDetail(@PathVariable("replyId") Integer replyId,
@RequestHeader(required = false) String token) {
PICAUser user = null;
PicaUser user = null;
if (token != null) {
user = CommonUtils.getUserByToken(redisClient, token);
......@@ -286,8 +290,8 @@ public class AnalysisController {
@RequestMapping(value = "/replyDetailByExamTitleId/{examTitleId}", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
public PicaResponse<ExamTitleReplyDetailDto> getReplyDetailByExamTitleId(@PathVariable("examTitleId") Integer examTitleId,
@RequestHeader(required = false) String token) {
System.out.println("replyDetailByExamTitleId: examTitleId == " + examTitleId.toString() + ", token=" + token);
PICAUser user = null;
logger.info("replyDetailByExamTitleId: examTitleId == " + examTitleId.toString() + ", token=" + token);
PicaUser user = null;
if (token != null) {
user = CommonUtils.getUserByToken(redisClient, token);
......@@ -351,17 +355,17 @@ public class AnalysisController {
return ReturnUtil.getPicaResponse(PicaResultCode.SYSTEM_NO_TOKEN);
}
PICAUser user = CommonUtils.getUserByToken(redisClient, token);
PicaUser user = CommonUtils.getUserByToken(redisClient, token);
if (user == null || user.getId().intValue() == 0) {
System.out.println("starrecord: user == null, token=" + token);
logger.info("starrecord: user == null, token=" + token);
return ReturnUtil.getPicaResponse(PicaResultCode.LOGIN_FAILE);
}
Doctor doctor = doctorService.getDoctorById(user.getId());
if (doctor == null) {
System.out.println("starrecord: doctor == null, userid=" + user.getId().toString());
logger.info("starrecord: doctor == null, userid=" + user.getId().toString());
return ReturnUtil.getPicaResponse(PicaResultCode.SYSTEM_INVALID_TOKEN);
}
......@@ -374,7 +378,7 @@ public class AnalysisController {
return ReturnUtil.getPicaResponse(PicaResultCode.INTERFACE_FORBID_VISIT);
}
System.out.println("starrecord: replyid=" + replyId.toString() + " token=" + token + " roundId=" + roundId + " examTitleId=" + examTitleId);
logger.info("starrecord: replyid=" + replyId.toString() + " token=" + token + " roundId=" + roundId + " examTitleId=" + examTitleId);
AnalysisRound analysisRound = analysisService.getRoundInfoById(roundId);
if ((new Date()).getTime() > analysisRound.getEndTime().getTime()) {
......@@ -398,14 +402,14 @@ public class AnalysisController {
return ReturnUtil.getPicaResponse(PicaResultCode.SYSTEM_NO_TOKEN);
}
PICAUser user = CommonUtils.getUserByToken(redisClient, token);
PicaUser user = CommonUtils.getUserByToken(redisClient, token);
if (user == null || user.getId().intValue() == 0) {
System.out.println("cancelStar: user == null, token=" + token);
logger.info("cancelStar: user == null, token=" + token);
return ReturnUtil.getPicaResponse(PicaResultCode.LOGIN_FAILE);
}
System.out.println("cancelStar: replyid=" + replyId.toString() + " token=" + token);
logger.info("cancelStar: replyid=" + replyId.toString() + " token=" + token);
if (0 != analysisService.removeStarRecord(replyId, user.getId())) {
return ReturnUtil.getPicaResponse(PicaResultCode.RESULE_DATA_NONE);
......@@ -419,7 +423,7 @@ public class AnalysisController {
public PicaResponse<ExamTitleReplyDto> nextReplyList(@PathVariable("examTitleId") Integer examTitleId,
@RequestHeader(required = false) String token) {
PICAUser user = null;
PicaUser user = null;
if (token != null) {
user = CommonUtils.getUserByToken(redisClient, token);
......@@ -473,7 +477,7 @@ public class AnalysisController {
public PicaResponse<ExamTitleReplyDto> nextReplyDetail(@PathVariable("replyId") Integer replyId,
@RequestHeader(required = false) String token) {
PICAUser user = null;
PicaUser user = null;
if (token != null) {
user = CommonUtils.getUserByToken(redisClient, token);
......@@ -537,10 +541,10 @@ public class AnalysisController {
return picaResponse;
}
PICAUser user = CommonUtils.getUserByToken(redisClient, token);
PicaUser user = CommonUtils.getUserByToken(redisClient, token);
if (user == null || user.getId().intValue() == 0) {
System.out.println("reply: user == null, token=" + token);
logger.info("reply: user == null, token=" + token);
PicaResponse picaResponse = ReturnUtil.getPicaResponse(PicaResultCode.LOGIN_FAILE);
picaResponse.setData("");
return picaResponse;
......@@ -550,7 +554,7 @@ public class AnalysisController {
JSONObject jsonObject = JSONObject.parseObject(content);
content = jsonObject.get("content").toString();
} catch (Exception e) {
System.out.println("parse error: " + content);
logger.info("parse error: " + content);
}
/**
......@@ -615,7 +619,7 @@ public class AnalysisController {
@ApiOperation(value = "获取某一轮的题目V2", response = PicaResponse.class)
@RequestMapping(value = "/roundDetail/v2/{roundId}", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
public PicaResponse<RoundExamTitleV2Dto> getRoundDetailV2(@PathVariable(value = "roundId") Integer roundId) {
System.out.println("roundDetail: roundId" + roundId);
logger.info("roundDetail: roundId" + roundId);
PicaResponse.Builder<RoundExamTitleV2Dto> builder = new PicaResponse.Builder<>();
try {
......@@ -629,9 +633,11 @@ public class AnalysisController {
List<AnalysisRoundDto> roundDtoList = analysisService.getCHCHistoryRound(CHC_ANALYSIS_ID);
/**
* 获取list中一个的roundId
* 获取list中最后一个的roundId
*/
roundId = roundDtoList.get(0).getRoundId();
if (roundDtoList.size() > 0) {
roundId = roundDtoList.get(roundDtoList.size() - 1).getRoundId();
}
roundExamTitleV2Dto.setRoundList(roundDtoList);
}
......@@ -656,7 +662,7 @@ public class AnalysisController {
roundExamTitleV2Dto.setElectedStarCount(analysisService.getElectedStarCountByRoundId(roundId));
Integer doctorId = analysisService.getElectedDoctorIdByRoundId(roundId);
roundExamTitleV2Dto.setElectedDoctor(doctorService.getDoctorDtoById(doctorId));
roundExamTitleV2Dto.setElectedDoctor(doctorId != null ? doctorService.getDoctorDtoById(doctorId) : new DoctorDto() );
} else {
roundExamTitleV2Dto.setRemainingTime(DateUtils.remainingTime(sdf.parse(roundExamTitleDto.getEndTime())));
roundExamTitleV2Dto.setIsFinished(0);
......@@ -681,9 +687,9 @@ public class AnalysisController {
if (token == null) {
return ReturnUtil.getPicaResponse(PicaResultCode.SYSTEM_NO_TOKEN);
}
PICAUser user = CommonUtils.getUserByToken(redisClient, token);
PicaUser user = CommonUtils.getUserByToken(redisClient, token);
if (user == null || user.getId().intValue() == 0) {
System.out.println("myStar: user == null, token=" + token);
logger.info("myStar: user == null, token=" + token);
return ReturnUtil.getPicaResponse(PicaResultCode.LOGIN_FAILE);
}
......@@ -695,7 +701,7 @@ public class AnalysisController {
}
*/
if (roundId != null)
System.out.println("myStar: roundId=" + roundId.toString() + " token=" + token);
logger.info("myStar: roundId=" + roundId.toString() + " token=" + token);
PicaResponse.Builder<MyStarDto> builder = new PicaResponse.Builder<>();
......
......@@ -4,12 +4,14 @@ import com.alibaba.fastjson.JSONObject;
import com.pica.cloud.foundation.entity.PicaResponse;
import com.pica.cloud.foundation.entity.PicaResultCode;
import com.pica.cloud.foundation.redis.RedisClient;
import com.pica.cloud.foundation.utils.entity.PICAUser;
import com.pica.cloud.foundation.utils.entity.PicaUser;
import com.pica.cloud.online.exam.analysis.common.CommonUtils;
import com.pica.cloud.online.exam.analysis.common.util.ReturnUtil;
import com.pica.cloud.online.exam.analysis.server.service.AntiSpamService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -36,7 +38,7 @@ public class AntiSpamController {
return ReturnUtil.getPicaResponse(PicaResultCode.SYSTEM_NO_TOKEN);
}
PICAUser user = CommonUtils.getUserByToken(redisClient, token);
PicaUser user = CommonUtils.getUserByToken(redisClient, token);
if (user == null || user.getId().intValue() == 0) {
return ReturnUtil.getPicaResponse(PicaResultCode.LOGIN_FAILE);
......@@ -72,7 +74,7 @@ public class AntiSpamController {
return ReturnUtil.getPicaResponse(PicaResultCode.SYSTEM_NO_TOKEN);
}
PICAUser user = CommonUtils.getUserByToken(redisClient, token);
PicaUser user = CommonUtils.getUserByToken(redisClient, token);
if (user == null || user.getId().intValue() == 0) {
return ReturnUtil.getPicaResponse(PicaResultCode.LOGIN_FAILE);
......
......@@ -15,6 +15,8 @@ import com.pica.cloud.online.exam.analysis.server.utils.HttpClient4Utils;
import com.pica.cloud.online.exam.analysis.server.utils.SignatureUtils;
import org.apache.http.Consts;
import org.apache.http.client.HttpClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -28,6 +30,7 @@ import java.util.regex.Pattern;
*/
@Service
public class AntiSpamServiceImpl implements AntiSpamService {
private static Logger logger = LoggerFactory.getLogger(AntiSpamServiceImpl.class);
@Autowired
private PropertiesConfiguration properties;
......@@ -82,7 +85,7 @@ public class AntiSpamServiceImpl implements AntiSpamService {
*/
String response = HttpClient4Utils.sendPost(httpClient, properties.getNeteaseAntispamTextApiUrl(), params, Consts.UTF_8);
System.out.println("content:" + content + " response=" + response);
logger.info("content:" + content + " response=" + response);
/**
* 5. 解析返回值
......@@ -231,7 +234,7 @@ public class AntiSpamServiceImpl implements AntiSpamService {
int status = jObject.get("status").getAsInt();
String taskId = jObject.get("taskId").getAsString();
JsonArray labelArray = jObject.get("labels").getAsJsonArray();
System.out.println(String.format("taskId=%s,status=%s,name=%s,labels:", taskId, status, name));
logger.info(String.format("taskId=%s,status=%s,name=%s,labels:", taskId, status, name));
/**
* 检测失败 0:成功 610:图片下载失败 620:图片格式错误 630:其他
......@@ -253,7 +256,7 @@ public class AntiSpamServiceImpl implements AntiSpamService {
int level = lObject.get("level").getAsInt();
double rate = lObject.get("rate").getAsDouble();
if (label == 100 || label == 110 || label == 210) {
System.out.println(String.format("label:%s, level=%s, rate=%s", label, level, rate));
logger.info(String.format("label:%s, level=%s, rate=%s", label, level, rate));
if (level > maxLevel) {
maxLevel = level;
maxLable = label;
......@@ -268,7 +271,7 @@ public class AntiSpamServiceImpl implements AntiSpamService {
}
}
} else {
System.out.println(String.format("ERROR: code=%s, msg=%s", code, msg));
logger.error(String.format("ERROR: code=%s, msg=%s", code, msg));
}
/**
* 成功
......
......@@ -31,4 +31,4 @@ management.security.enabled=false
#spring.zipkin.base-url=http://192.168.110.124:7895
#spring.sleuth.sampler.percentage=1.0
#logging.config=classpath:log4j2-dev.xml
logging.config=classpath:log4j2-dev.xml
......@@ -31,4 +31,4 @@ management.security.enabled=true
spring.zipkin.base-url=http://172.19.137.19:7895
spring.sleuth.sampler.percentage=1.0
#logging.config=classpath:log4j2-prod.xml
\ No newline at end of file
logging.config=classpath:log4j2-prod.xml
\ No newline at end of file
......@@ -31,4 +31,4 @@ management.security.enabled=false
spring.zipkin.base-url=http://192.168.110.133:7895
spring.sleuth.sampler.percentage=1.0
#logging.config=classpath:log4j2-test1.xml
\ No newline at end of file
logging.config=classpath:log4j2-test1.xml
\ No newline at end of file
......@@ -31,4 +31,4 @@ management.security.enabled=false
spring.zipkin.base-url=http://192.168.110.141:7895
spring.sleuth.sampler.percentage=1.0
#logging.config=classpath:log4j2-uat.xml
\ No newline at end of file
logging.config=classpath:log4j2-uat.xml
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true" scan="true" scanPeriod="30 seconds">
<property name="encoder.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{req.xForwardedFor} %X{req.method} %X{req.requestURL} %X{req.queryString} %X{req.userAgent} %-5level %logger{36} - %msg%n"/>
<property name="rollingPolicy.maxFileSize" value="5MB"/>
<property name="rollingPolicy.maxHistory" value="30"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<Target>System.out</Target>
<encoder>
<pattern>${encoder.pattern}</pattern>
</encoder>
</appender>
<appender name="TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${encoder.pattern}</pattern>
<charset>UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>TRACE</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/trace.%i.log</fileNamePattern>
<maxHistory>${rollingPolicy.maxHistory}</maxHistory>
<maxFileSize>${rollingPolicy.maxFileSize}</maxFileSize>
</rollingPolicy>
</appender>
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${encoder.pattern}</pattern>
<charset>UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/info.%i.log</fileNamePattern>
<maxHistory>${rollingPolicy.maxHistory}</maxHistory>
<maxFileSize>${rollingPolicy.maxFileSize}</maxFileSize>
</rollingPolicy>
</appender>
<appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${encoder.pattern}</pattern>
<charset>UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/debug.%i.log</fileNamePattern>
<maxHistory>${rollingPolicy.maxHistory}</maxHistory>
<maxFileSize>${rollingPolicy.maxFileSize}</maxFileSize>
</rollingPolicy>
</appender>
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${encoder.pattern}</pattern>
<charset>UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/warn.%i.log</fileNamePattern>
<maxHistory>${rollingPolicy.maxHistory}</maxHistory>
<maxFileSize>${rollingPolicy.maxFileSize}</maxFileSize>
</rollingPolicy>
</appender>
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${encoder.pattern}</pattern>
<charset>UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/error.%i.log</fileNamePattern>
<maxHistory>${rollingPolicy.maxHistory}</maxHistory>
<maxFileSize>${rollingPolicy.maxFileSize}</maxFileSize>
</rollingPolicy>
</appender>
<!--logger-->
<logger name="com.ibatis" level="DEBUG" />
<logger name="com.ibatis.common.jdbc.SimpleDataSource" level="DEBUG" />
<logger name="com.ibatis.common.jdbc.ScriptRunner" level="DEBUG" />
<logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="DEBUG" />
<logger name="java.sql.Connection" level="DEBUG" />
<logger name="java.sql.Statement" level="DEBUG" />
<logger name="java.sql.PreparedStatement" level="DEBUG" />
<!--root-->
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="INFO" />
<appender-ref ref="ERROR" />
</root>
</configuration>
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册