| <?xml version="1.0" encoding="UTF-8"?>  | 
| <configuration>  | 
|     <!-- 日志存放路径 -->  | 
|     <property name="log.path" value="./log"/>  | 
|     <!-- 日志输出格式 -->  | 
|     <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>  | 
|   | 
|     <!-- 控制台输出 -->  | 
|     <appender name="console" class="ch.qos.logback.core.ConsoleAppender">  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|   | 
|     <!-- 系统日志输出 -->  | 
|     <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/sys-info.log</file>  | 
|         <!-- 循环政策:基于时间创建日志文件 -->  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!-- 日志文件名格式 -->  | 
|             <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!-- 日志最大的历史 60天 -->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|         <filter class="ch.qos.logback.classic.filter.LevelFilter">  | 
|             <!-- 过滤的级别 -->  | 
|             <level>INFO</level>  | 
|             <!-- 匹配时的操作:接收(记录) -->  | 
|             <onMatch>ACCEPT</onMatch>  | 
|             <!-- 不匹配时的操作:拒绝(不记录) -->  | 
|             <onMismatch>DENY</onMismatch>  | 
|         </filter>  | 
|     </appender>  | 
|     <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/sys-error.log</file>  | 
|         <!-- 循环政策:基于时间创建日志文件 -->  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!-- 日志文件名格式 -->  | 
|             <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!-- 日志最大的历史 60天 -->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|         <filter class="ch.qos.logback.classic.filter.LevelFilter">  | 
|             <!-- 过滤的级别 -->  | 
|             <level>ERROR</level>  | 
|             <!-- 匹配时的操作:接收(记录) -->  | 
|             <onMatch>ACCEPT</onMatch>  | 
|             <!-- 不匹配时的操作:拒绝(不记录) -->  | 
|             <onMismatch>DENY</onMismatch>  | 
|         </filter>  | 
|     </appender>  | 
|     <!-- 用户访问日志输出  -->  | 
|     <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/sys-user.log</file>  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!-- 按天回滚 daily -->  | 
|             <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!-- 日志最大的历史 60天 -->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|     <!-- Authorize日志输出  -->  | 
|     <appender name="authorize" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/authorize.log</file>  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!-- 按天回滚 daily -->  | 
|             <fileNamePattern>${log.path}/authorize.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!-- 日志最大的历史 60天 -->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|     <!--hikSdk日志输出-->  | 
|     <appender name="hikSdk" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/hikSdk.log</file>  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!--按天回滚daily-->  | 
|             <fileNamePattern>${log.path}/hikSdk.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!--日志最大的历史60天-->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|     <!--dhSdk日志输出-->  | 
|     <appender name="dhSdk" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/dhSdk.log</file>  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!--按天回滚daily-->  | 
|             <fileNamePattern>${log.path}/dhSdk.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!--日志最大的历史60天-->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|     <!--dhSdk日志输出-->  | 
|     <appender name="sdk" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/sdk.log</file>  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!--按天回滚daily-->  | 
|             <fileNamePattern>${log.path}/sdk.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!--日志最大的历史60天-->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|     <!--minio日志输出-->  | 
|     <appender name="minio" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/minio.log</file>  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!--按天回滚daily-->  | 
|             <fileNamePattern>${log.path}/minio.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!--日志最大的历史60天-->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|     <!--盗电报警日志输出-->  | 
|     <appender name="stealAlarm" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/stealAlarm.log</file>  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!--按天回滚daily-->  | 
|             <fileNamePattern>${log.path}/stealAlarm.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!--日志最大的历史60天-->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|     <!--websocket报警日志输出-->  | 
|     <appender name="websocket" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/websocket.log</file>  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!--按天回滚daily-->  | 
|             <fileNamePattern>${log.path}/websocket.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!--日志最大的历史60天-->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|     <!--mqtt日志输出-->  | 
|     <appender name="mqtt" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/mqtt.log</file>  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!--按天回滚daily-->  | 
|             <fileNamePattern>${log.path}/mqtt.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!--日志最大的历史60天-->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|     <!--guideQueue日志输出-->  | 
|     <appender name="guideQueue" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/guideQueue.log</file>  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!--按天回滚daily-->  | 
|             <fileNamePattern>${log.path}/guideQueue.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!--日志最大的历史60天-->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|     <!--PatrolInspectionTask日志输出-->  | 
|     <appender name="patrolInspectionTask" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/patrolInspectionTask.log</file>  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!--按天回滚daily-->  | 
|             <fileNamePattern>${log.path}/patrolInspectionTask.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!--日志最大的历史60天-->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|     <!--融云日志输出-->  | 
|     <appender name="rongCloud" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/rongCloud.log</file>  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!--按天回滚daily-->  | 
|             <fileNamePattern>${log.path}/rongCloud.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!--日志最大的历史60天-->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|     <!--cmd命令日志输出-->  | 
|     <appender name="cmd" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/cmd.log</file>  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!--按天回滚daily-->  | 
|             <fileNamePattern>${log.path}/cmd.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!--日志最大的历史60天-->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|     <!--无人机日志输出-->  | 
|     <appender name="uav" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/uav.log</file>  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!--按天回滚daily-->  | 
|             <fileNamePattern>${log.path}/uav.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!--日志最大的历史60天-->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|     <!--三一车辆日志输出-->  | 
|     <appender name="sy" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/sy.log</file>  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!--按天回滚daily-->  | 
|             <fileNamePattern>${log.path}/sy.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!--日志最大的历史60天-->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|     <!--流媒体日志输出-->  | 
|     <appender name="vtdu" class="ch.qos.logback.core.rolling.RollingFileAppender">  | 
|         <file>${log.path}/vtdu.log</file>  | 
|         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  | 
|             <!--按天回滚daily-->  | 
|             <fileNamePattern>${log.path}/vtdu.%d{yyyy-MM-dd}.log</fileNamePattern>  | 
|             <!--日志最大的历史60天-->  | 
|             <maxHistory>60</maxHistory>  | 
|         </rollingPolicy>  | 
|         <encoder>  | 
|             <pattern>${log.pattern}</pattern>  | 
|         </encoder>  | 
|     </appender>  | 
|     <!-- 系统模块日志级别控制  -->  | 
|     <logger name="com.ruoyi" level="info"/>  | 
|     <!-- Spring日志级别控制  -->  | 
|     <logger name="org.springframework" level="warn"/>  | 
|     <!--控制台日志级别控制-->  | 
|     <root level="debug">  | 
|         <appender-ref ref="console"/>  | 
|     </root>  | 
|     <!--系统操作日志-->  | 
|     <root level="error">  | 
|         <appender-ref ref="file_info"/>  | 
|         <appender-ref ref="file_error"/>  | 
|     </root>  | 
|     <!--系统用户操作日志-->  | 
|     <logger name="sys-user" level="INFO">  | 
|         <appender-ref ref="sys-user"/>  | 
|     </logger>  | 
|     <!--hikSdk日志-->  | 
|     <logger name="hikSdk" level="INFO">  | 
|         <appender-ref ref="hikSdk"/>  | 
|     </logger>  | 
|     <!--dhSdk日志-->  | 
|     <logger name="dhSdk" level="INFO">  | 
|         <appender-ref ref="dhSdk"/>  | 
|     </logger>  | 
|     <!--sdk日志-->  | 
|     <logger name="sdk" level="INFO">  | 
|         <appender-ref ref="sdk"/>  | 
|     </logger>  | 
|     <!--mqtt日志-->  | 
|     <logger name="mqtt" level="INFO">  | 
|         <appender-ref ref="mqtt"/>  | 
|     </logger>  | 
|     <!--minio日志-->  | 
|     <logger name="minio" level="INFO">  | 
|         <appender-ref ref="minio"/>  | 
|     </logger>  | 
|     <!--cmd日志-->  | 
|     <logger name="cmd" level="INFO">  | 
|         <appender-ref ref="cmd"/>  | 
|     </logger>  | 
|     <!--uav日志-->  | 
|     <logger name="uav" level="INFO">  | 
|         <appender-ref ref="uav"/>  | 
|     </logger>  | 
|     <!--sy日志-->  | 
|     <logger name="sy" level="INFO">  | 
|         <appender-ref ref="sy"/>  | 
|     </logger>  | 
|     <!--vtdu日志-->  | 
|     <logger name="vtdu" level="INFO">  | 
|         <appender-ref ref="vtdu"/>  | 
|     </logger>  | 
|     <!--rongCloud日志-->  | 
|     <logger name="rongCloud" level="INFO">  | 
|         <appender-ref ref="rongCloud"/>  | 
|     </logger>  | 
|     <!--patrolInspectionTask日志-->  | 
|     <logger name="patrolInspectionTask" level="INFO">  | 
|         <appender-ref ref="patrolInspectionTask"/>  | 
|     </logger>  | 
|     <!--authorize日志-->  | 
|     <logger name="authorize" level="INFO">  | 
|         <appender-ref ref="authorize"/>  | 
|     </logger>  | 
|     <!--guideQueue日志-->  | 
|     <logger name="guideQueue" level="INFO">  | 
|         <appender-ref ref="guideQueue"/>  | 
|     </logger>  | 
|     <!--stealAlarm日志-->  | 
|     <logger name="stealAlarm" level="INFO">  | 
|         <appender-ref ref="stealAlarm"/>  | 
|     </logger>  | 
|     <!--stealAlarm日志-->  | 
|     <logger name="websocket" level="INFO">  | 
|         <appender-ref ref="websocket"/>  | 
|     </logger>  | 
| </configuration>  |