Sfoglia il codice sorgente

Merge branch 'master' of http://gogs.seec.seecoder.cn/WengPuHong/seecoder-devcloud

sky 4 anni fa
parent
commit
9685f424d4

+ 39 - 47
settings.xml

@@ -1,48 +1,40 @@
 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
-                    http://maven.apache.org/xsd/settings-1.0.0.xsd">
-    <mirrors>
-        <mirror>
-            <id>aliyunmaven</id>
-            <mirrorOf>central</mirrorOf>
-            <name>阿里云公共仓库</name>
-            <url>https://maven.aliyun.com/repository/public</url>
-        </mirror>
-    </mirrors>
-    <profiles>
-        <profile>
-            <id>nexus</id>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-            </activation>
-            <repositories>
-                <repository>
-                    <id>public</id>
-                    <name>Public Repositories</name>
-                    <url>http://nexus.seecoder.cn/repository/maven-public</url>
-                </repository>
-                <repository>
-                    <id>releases</id>
-                    <name>Public Repositories</name>
-                    <url>http://nexus.seecoder.cn/repository/maven-releases</url>
-                </repository>
-            </repositories>
-            <properties>
-                <maven.compiler.source>1.8</maven.compiler.source>
-                <maven.compiler.target>1.8</maven.compiler.target>
-                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
-            </properties>
-        </profile>
-    </profiles>
-    <activeProfiles>
-        <activeProfile>nexus</activeProfile>
-    </activeProfiles>
-    <servers>
-        <server>
-            <id>nexus</id>
-            <username>admin</username>
-            <password>NJU67nexus</password>
-        </server>
-    </servers>
-</settings>
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
+					http://maven.apache.org/xsd/settings-1.0.0.xsd">
+	<mirrors>
+		<mirror>
+			<id>aliyunmaven</id>
+			<mirrorOf>central</mirrorOf>
+			<name>阿里云公共仓库</name>
+			<url>https://maven.aliyun.com/repository/public</url>
+		</mirror>
+	</mirrors>
+	<profiles> 
+		<profile> 
+			<id>nexus</id>  
+			<repositories> 
+				<repository> 
+					<id>public</id>  
+					<name>Public Repositories</name>  
+					<url>http://nexus.seecoder.cn/repository/maven-public</url> 
+				</repository> 
+				<repository> 
+					<id>releases</id>  
+					<name>Public Repositories</name>  
+					<url>http://nexus.seecoder.cn/repository/maven-releases</url> 
+				</repository> 
+			</repositories>
+		</profile> 
+	</profiles>
+	<activeProfiles>
+			<activeProfile>nexus</activeProfile>
+	</activeProfiles>
+	<servers>
+		<server>
+			<id>nexus</id>
+			<username>admin</username>
+			<password>NJU67nexus</password>
+		</server>
+	</servers>
+</settings>

+ 14 - 14
web/src/main/java/cn/seecoder/web/service/impl/bug_list/BugListServiceImpl.java

@@ -119,13 +119,13 @@ public class BugListServiceImpl implements BugListService {
         //ANA 日志需要打出修改的基础信息
         try{
             JSONObject object = new JSONObject();
-            object.put("bug_id:",po.getId());
-            object.put("project_id:",po.getProjectId());
-            object.put("priority:",po.getPriority());
-            object.put("title:",po.getTitle());
-            object.put("description:",po.getDescription());
-            object.put("timeToTake:",po.getTimeToTake());
-            object.put("bug_state:",po.getState());
+            object.put("bug_id",po.getId());
+            object.put("project_id",po.getProjectId());
+            object.put("priority",po.getPriority());
+            object.put("title",po.getTitle());
+            object.put("description",po.getDescription());
+            object.put("timeToTake",po.getTimeToTake());
+            object.put("bug_state",po.getState());
 
             String data = com.alibaba.fastjson.JSONObject.toJSONString(object);
             LogTrackingUtil.log(data, OpType.MODIFY_BUGLIST);
@@ -150,13 +150,13 @@ public class BugListServiceImpl implements BugListService {
         //ANA 日志需要打出修改的状态信息
         try{
             JSONObject object = new JSONObject();
-            object.put("bug_id:",po.getId());
-            object.put("project_id:",po.getProjectId());
-            object.put("priority:",po.getPriority());
-            object.put("title:",po.getTitle());
-            object.put("description:",po.getDescription());
-            object.put("timeToTake:",po.getTimeToTake());
-            object.put("bug_state:",po.getState());
+            object.put("bug_id",po.getId());
+            object.put("project_id",po.getProjectId());
+            object.put("priority",po.getPriority());
+            object.put("title",po.getTitle());
+            object.put("description",po.getDescription());
+            object.put("timeToTake",po.getTimeToTake());
+            object.put("bug_state",po.getState());
 
             String data = com.alibaba.fastjson.JSONObject.toJSONString(object);
             LogTrackingUtil.log(data, OpType.MODIFY_BUGLIST);

+ 17 - 0
web/src/main/java/cn/seecoder/web/service/impl/pipeline/DeploymentServiceImpl.java

@@ -1,6 +1,8 @@
 package cn.seecoder.web.service.impl.pipeline;
 
 import cn.seecoder.api.k8s.K8sConstants;
+import cn.seecoder.common.util.LogTrackingUtil;
+import cn.seecoder.common.util.OpType;
 import cn.seecoder.web.dao.pipeline.DeploymentMapper;
 import cn.seecoder.web.dao.pipeline.PipelineRecordMapper;
 import cn.seecoder.web.dao.pipeline.PipelineMapper;
@@ -9,6 +11,7 @@ import cn.seecoder.web.model.po.pipeline.DeploymentPO;
 import cn.seecoder.web.model.po.pipeline.PipelineRecordPO;
 import cn.seecoder.web.model.po.pipeline.PipelinePO;
 import cn.seecoder.web.model.po.project.ProjectPO;
+import com.alibaba.fastjson.JSONObject;
 import io.kubernetes.client.openapi.models.V1DeploymentStatus;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.HttpStatus;
@@ -160,6 +163,20 @@ public class DeploymentServiceImpl implements DeploymentService {
             pipelineRecordMapper.update(record);
         }
         //ANA 日志需要打出部署流水线的信息
+        List<Integer> pipelineIds = new ArrayList<>();
+        pipelineIds.add(pipelineId);
+        PipelineRecordPO pipelineRecordPO = pipelineRecordMapper.selectPipelinesLatestRecord(pipelineIds);
+        try{
+            JSONObject object = new JSONObject();
+            object.put("record_id",pipelineRecordPO.getId());
+            object.put("pipeline_id",pipelineId);
+            object.put("user_id",userId);
+            object.put("type",record.getResult());
+            object.put("result",record.getResult());
+
+            String data = JSONObject.toJSONString(object);
+            LogTrackingUtil.log(data, OpType.DEPLOY_PIPELINE);
+        }catch (Exception e){}
     }
 
     @Override

+ 29 - 0
web/src/main/java/cn/seecoder/web/service/impl/pipeline/PipelineServiceImpl.java

@@ -2,17 +2,22 @@ package cn.seecoder.web.service.impl.pipeline;
 
 import cn.seecoder.common.exceptions.AccessDeniedException;
 import cn.seecoder.common.exceptions.ServiceException;
+import cn.seecoder.common.util.LogTrackingUtil;
+import cn.seecoder.common.util.OpType;
 import cn.seecoder.web.core.pipeline.PipelineException;
 import cn.seecoder.web.core.pipeline.template.PipelineTemplateTable;
+import cn.seecoder.web.dao.pipeline.DeploymentMapper;
 import cn.seecoder.web.dao.pipeline.PipelineMapper;
 import cn.seecoder.web.dao.pipeline.PipelineRecordMapper;
 import cn.seecoder.web.dao.user.UserMapper;
+import cn.seecoder.web.model.po.pipeline.DeploymentPO;
 import cn.seecoder.web.model.po.pipeline.PipelinePO;
 import cn.seecoder.web.model.po.pipeline.PipelineRecordPO;
 import cn.seecoder.web.model.po.user.UserPO;
 import cn.seecoder.web.model.vo.pipeline.*;
 import cn.seecoder.web.service.pipeline.DeploymentService;
 import cn.seecoder.web.service.pipeline.PipelineService;
+import com.alibaba.fastjson.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -38,6 +43,9 @@ public class PipelineServiceImpl implements PipelineService {
 
     private final DeploymentService deploymentService;
 
+    @Autowired
+    private DeploymentMapper deploymentMapper;
+
 
     @Autowired
     public PipelineServiceImpl(PipelineRecordMapper pipelineRecordMapper, PipelineMapper pipelineMapper, UserMapper userMapper, DeploymentService deploymentService) {
@@ -118,6 +126,17 @@ public class PipelineServiceImpl implements PipelineService {
         }
         pipelineMapper.insert(pipeline);
         //ANA 日志需要打出创建流水线的信息
+        PipelinePO pipelinePO = pipelineMapper.selectByNameAndProjectId(pipelineCreateVO.getName(),pipelineCreateVO.getProjectId());
+        try{
+            JSONObject object = new JSONObject();
+            object.put("pipeline_id",pipelinePO.getId());
+            object.put("project_id",pipelinePO.getProjectId());
+            object.put("project_name",pipelinePO.getName());
+
+            String data = JSONObject.toJSONString(object);
+            LogTrackingUtil.log(data, OpType.CREATE_PIPELINE);
+        }catch (Exception e){}
+
     }
 
     @Override
@@ -134,6 +153,16 @@ public class PipelineServiceImpl implements PipelineService {
         pipelineMapper.delete(pipelineId);
         deploymentService.delete(projectId,pipelineId);
         //ANA 日志需要打出被删除流水线的信息
+        DeploymentPO deploymentPO = deploymentMapper.selectByPipelineId(pipelineId);
+        try{
+            JSONObject object = new JSONObject();
+            object.put("pipeline_id",pipelineId);
+            object.put("project_id",projectId);
+            object.put("delete_deploy_id",deploymentPO.getId());
+
+            String data = JSONObject.toJSONString(object);
+            LogTrackingUtil.log(data, OpType.DELETE_PIPELINE);
+        }catch (Exception e){}
     }
 
     @Override

+ 5 - 4
web/src/main/java/cn/seecoder/web/service/impl/project/CommitServiceImpl.java

@@ -40,10 +40,11 @@ public class CommitServiceImpl implements CommitService {
         //ANA 日志需要打出用户的commit信息
         try{
             JSONObject object = new JSONObject();
-            object.put("commit_id:",po.getId());
-            object.put("user_id:",userMapper.selectIdByEmail(po.getEmail()));
-            object.put("project_id:",po.getProjectId());
-            object.put("commit_date:",po.getTimestamp());
+            object.put("commit_id",po.getId());
+            object.put("user_id",userMapper.selectIdByEmail(po.getEmail()));
+            object.put("project_id",po.getProjectId());
+            object.put("commit_date",po.getTimestamp());
+            object.put("message",po.getMessage());
 
             String data = JSONObject.toJSONString(object);
             LogTrackingUtil.log(data, OpType.COMMIT);

+ 63 - 1
web/src/main/java/cn/seecoder/web/service/impl/tree/TreeNodeServiceImpl.java

@@ -1,5 +1,7 @@
 package cn.seecoder.web.service.impl.tree;
 
+import cn.seecoder.common.util.LogTrackingUtil;
+import cn.seecoder.common.util.OpType;
 import cn.seecoder.web.dao.project.CommitMapper;
 import cn.seecoder.web.dao.tree.TreeNodeMapper;
 import cn.seecoder.web.dao.user.UserMapper;
@@ -12,6 +14,7 @@ import cn.seecoder.web.model.vo.tree.TreeNodeUpdateBasicVO;
 import cn.seecoder.web.model.vo.tree.TreeNodeVO;
 import cn.seecoder.web.service.tree.TreeNodeService;
 
+import com.alibaba.fastjson.JSONObject;
 import org.apache.http.HttpStatus;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -88,6 +91,22 @@ public class TreeNodeServiceImpl implements TreeNodeService {
             throw new ServiceException(503,"插入需求节点失败");
         }
         //ANA 日志需要打出创建需求节点的信息
+        try{
+            JSONObject object = new JSONObject();
+            object.put("node_id",res);
+            object.put("title",treeNodePO.getTitle());
+            object.put("project_id",treeNodePO.getProjectId());
+            object.put("user_id",treeNodePO.getProcessorId());
+            object.put("type",treeNodePO.getType());
+            object.put("priority",treeNodePO.getPriority());
+            object.put("state",treeNodePO.getState());
+            object.put("timeToTake",treeNodePO.getTimeToTake());
+            object.put("parent_id",treeNodePO.getParentId());
+            object.put("deep",treeNodePO.getDeep());
+
+            String data = JSONObject.toJSONString(object);
+            LogTrackingUtil.log(data, OpType.MODYFY_REQUIREMENT_TREENODE);
+        }catch (Exception e){}
     }
 
     @Override
@@ -103,18 +122,37 @@ public class TreeNodeServiceImpl implements TreeNodeService {
         }
         treeNodeMapper.update(treeNodePO);
         //ANA 日志需要打出更新需求节点的信息
+        try{
+            JSONObject object = new JSONObject();
+            object.put("node_id",treeNodePO.getId());
+            object.put("title",treeNodePO.getTitle());
+            object.put("project_id",treeNodePO.getProjectId());
+            object.put("user_id",treeNodePO.getProcessorId());
+            object.put("type",treeNodePO.getType());
+            object.put("priority",treeNodePO.getPriority());
+            object.put("state",treeNodePO.getState());
+            object.put("timeToTake",treeNodePO.getTimeToTake());
+            object.put("parent_id",treeNodePO.getParentId());
+            object.put("deep",treeNodePO.getDeep());
+
+            String data = JSONObject.toJSONString(object);
+            LogTrackingUtil.log(data, OpType.MODYFY_REQUIREMENT_TREENODE);
+        }catch (Exception e){}
     }
 
     @Override
     @Transactional
     public void deleteTreeNode(int nodeId) throws ServiceException {
         TreeNodePO po = treeNodeMapper.getTreeNodeById(nodeId);
+        List<Integer> nodes = new ArrayList<>();
+        nodes.add(nodeId);
         if (po != null && po.getParentId()!=null){
             Stack<TreeNodePO> trees = new Stack<TreeNodePO>();
             trees.push(po);
             //递归删除
             while (trees.size()!=0){
                 TreeNodePO toDelete = trees.pop();
+                nodes.add(toDelete.getId());
                 treeNodeMapper.deleteTreeNode(toDelete.getId());
                 List<TreeNodePO> childs = treeNodeMapper.getTreeNodesByParentId(toDelete.getId());
                 for (TreeNodePO child : childs){
@@ -125,6 +163,13 @@ public class TreeNodeServiceImpl implements TreeNodeService {
             throw new ServiceException(HttpStatus.SC_SERVICE_UNAVAILABLE, "根节点不可以被删除");
         }
         //ANA 日志需要打出删除需求节点的信息
+        try{
+            JSONObject object = new JSONObject();
+            object.put("node_ids",nodes);
+
+            String data = JSONObject.toJSONString(object);
+            LogTrackingUtil.log(data,OpType.DELETE_REQUIREMENT_TREENODE);
+        }catch (Exception e){}
     }
 
     /**
@@ -167,8 +212,25 @@ public class TreeNodeServiceImpl implements TreeNodeService {
                 .priority(PriorityEnum.MIDDLE)
                 .timeToTake(0L)
                 .build();
-        treeNodeMapper.insertTreeNode(son);
+        Integer res = treeNodeMapper.insertTreeNode(son);
         //ANA 日志需要打出创建需求节点的信息
+
+        try{
+            JSONObject object = new JSONObject();
+            object.put("node_id",res);
+            object.put("title",son.getTitle());
+            object.put("project_id",son.getProjectId());
+            object.put("user_id",son.getProcessorId());
+            object.put("type",son.getType());
+            object.put("priority",son.getPriority());
+            object.put("state",son.getState());
+            object.put("timeToTake",son.getTimeToTake());
+            object.put("parent_id",son.getParentId());
+            object.put("deep",son.getDeep());
+
+            String data = JSONObject.toJSONString(object);
+            LogTrackingUtil.log(data, OpType.MODYFY_REQUIREMENT_TREENODE);
+        }catch (Exception e){}
     }
 
     @Override

+ 6 - 0
web/src/main/resources/application-prod.yaml

@@ -40,3 +40,9 @@ seecoder:
     registryUsername: admin
     registryPassword: NJU67nexus
     tls: false
+
+logging:
+  file:
+    name: /log/devcloud.log
+  level:
+    root: info

+ 0 - 3
web/src/main/resources/application-zxr.yml

@@ -57,6 +57,3 @@ seecoder:
     nexus-server: 192.168.68.79:18081
     repo-name: sec-repo
     clean-up-task: 83bb8249-71e8-4367-83b3-50c6f7518860
-
-logging:
-  config: classpath:logback-test.xml

+ 0 - 198
web/src/main/resources/logback-test.xml

@@ -1,198 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 详情见 https://blog.csdn.net/MengDiL_yl/article/details/86648197-->
-<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
-<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
-<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
-                 当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
-<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
-<configuration  scan="true" scanPeriod="10 seconds">
-    <contextName>logback-test</contextName>
-
-    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
-    <property name="logging.file.path" value="classpath:logs" />
-
-    <!--0. 日志格式和颜色渲染 -->
-    <!-- 彩色日志依赖的渲染类 -->
-    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
-    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
-    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
-    <!-- 彩色日志格式 -->
-    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
-
-    <!--1. 输出到控制台-->
-    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>debug</level>
-        </filter>
-        <encoder>
-            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
-            <!-- 设置字符集 -->
-            <charset>UTF-8</charset>
-        </encoder>
-    </appender>
-
-    <!--2. 输出到文档-->
-    <!-- 2.1 level为 DEBUG 日志,时间滚动输出  -->
-    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!-- 正在记录的日志文档的路径及文档名 -->
-        <file>${logging.file.path}/web_debug.log</file>
-        <!--日志文档输出格式-->
-        <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
-            <charset>UTF-8</charset> <!-- 设置字符集 -->
-        </encoder>
-        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 日志归档 -->
-            <fileNamePattern>${logging.file.path}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <maxFileSize>100MB</maxFileSize>
-            </timeBasedFileNamingAndTriggeringPolicy>
-            <!--日志文档保留天数-->
-            <maxHistory>15</maxHistory>
-        </rollingPolicy>
-        <!-- 此日志文档只记录debug级别的 -->
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>debug</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-
-    <!-- 2.2 level为 INFO 日志,时间滚动输出  -->
-    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!-- 正在记录的日志文档的路径及文档名 -->
-        <file>${logging.file.path}/web_info.log</file>
-        <!--日志文档输出格式-->
-        <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
-            <charset>UTF-8</charset>
-        </encoder>
-        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 每天日志归档路径以及格式 -->
-            <fileNamePattern>${logging.file.path}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <maxFileSize>100MB</maxFileSize>
-            </timeBasedFileNamingAndTriggeringPolicy>
-            <!--日志文档保留天数-->
-            <maxHistory>15</maxHistory>
-        </rollingPolicy>
-        <!-- 此日志文档只记录info级别的 -->
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>info</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-
-    <!-- 2.3 level为 WARN 日志,时间滚动输出  -->
-    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!-- 正在记录的日志文档的路径及文档名 -->
-        <file>${logging.file.path}/web_warn.log</file>
-        <!--日志文档输出格式-->
-        <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
-            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
-        </encoder>
-        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logging.file.path}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <maxFileSize>100MB</maxFileSize>
-            </timeBasedFileNamingAndTriggeringPolicy>
-            <!--日志文档保留天数-->
-            <maxHistory>15</maxHistory>
-        </rollingPolicy>
-        <!-- 此日志文档只记录warn级别的 -->
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>warn</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-
-    <!-- 2.4 level为 ERROR 日志,时间滚动输出  -->
-    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!-- 正在记录的日志文档的路径及文档名 -->
-        <file>${logging.file.path}/web_error.log</file>
-        <!--日志文档输出格式-->
-        <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
-            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
-        </encoder>
-        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logging.file.path}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <maxFileSize>100MB</maxFileSize>
-            </timeBasedFileNamingAndTriggeringPolicy>
-            <!--日志文档保留天数-->
-            <maxHistory>15</maxHistory>
-        </rollingPolicy>
-        <!-- 此日志文档只记录ERROR级别的 -->
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>ERROR</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-
-    <!--
-        <logger>用来设置某一个包或者具体的某一个类的日志打印级别、
-        以及指定<appender>。<logger>仅有一个name属性,
-        一个可选的level和一个可选的addtivity属性。
-        name:用来指定受此logger约束的某一个包或者具体的某一个类。
-        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
-              还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
-              如果未设置此属性,那么当前logger将会继承上级的级别。
-        addtivity:是否向上级logger传递打印信息。默认是true。
-        <logger name="org.springframework.web" level="info"/>
-        <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
-    -->
-
-    <!--
-        使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
-        第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
-        第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
-        【logging.level.org.mybatis=debug logging.level.dao=debug】
-     -->
-
-    <!--
-        root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
-        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
-        不能设置为INHERITED或者同义词NULL。默认是DEBUG
-        可以包含零个或多个元素,标识这个appender将会添加到这个logger。
-    -->
-
-    <!-- 4. 默认环境? -->
-
-    <root level="info">
-        <appender-ref ref="CONSOLE" />
-<!--        <appender-ref ref="DEBUG_FILE" />-->
-<!--        <appender-ref ref="INFO_FILE" />-->
-<!--        <appender-ref ref="WARN_FILE" />-->
-<!--        <appender-ref ref="ERROR_FILE" />-->
-    </root>
-
-<!--    4.2 生产环境:输出到文档-->
-<!--    <springProfile name="prod">-->
-<!--        <root level="info">-->
-<!--            <appender-ref ref="CONSOLE" />-->
-<!--            <appender-ref ref="INFO_FILE" />-->
-<!--            <appender-ref ref="WARN_FILE" />-->
-<!--            <appender-ref ref="ERROR_FILE" />-->
-<!--        </root>-->
-<!--    </springProfile>-->
-
-    <!--    4.2 zxr的环境:输出到文档-->
-    <springProfile name="zxr">
-        <root level="info">
-            <appender-ref ref="CONSOLE" />
-            <appender-ref ref="INFO_FILE" />
-            <appender-ref ref="WARN_FILE" />
-            <appender-ref ref="ERROR_FILE" />
-        </root>
-    </springProfile>
-</configuration>