shjung 11 months ago
parent
commit
08707933cd

+ 77 - 0
src/main/java/com/its/rota/client/aspect/LoggingAspect.java

@@ -0,0 +1,77 @@
+package com.its.rota.client.aspect;
+
+import com.beanit.its.CurrentLinkState;
+import com.beanit.its.IncidentConditions;
+import com.its.app.common.utils.Elapsed;
+import com.its.rota.client.process.dbms.DbmsData;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Slf4j
+@Aspect
+@Component
+public class LoggingAspect {
+    @Around("@annotation(com.its.rota.client.aspect.annotation.ScheduleElapsed)")
+    public Object scheduleElapsedTime(ProceedingJoinPoint joinPoint) throws Throwable {
+
+        String proceedName = String.format("%45s", joinPoint.getTarget().getClass().getSimpleName() + "." + joinPoint.getSignature().getName());
+        Elapsed elapsed = new Elapsed();
+        Object proceed = joinPoint.proceed();
+        log.info("{}: {}", proceedName, Elapsed.elapsedTimeStr(elapsed.nanoSeconds()));
+        return proceed;
+    }
+    @Around("@annotation(com.its.rota.client.aspect.annotation.ProcessElapsed)")
+    public Object processElapsedTime(ProceedingJoinPoint joinPoint) throws Throwable {
+        String proceedName = String.format("%45s", joinPoint.getTarget().getClass().getSimpleName() + "." + joinPoint.getSignature().getName());
+        Elapsed elapsed = new Elapsed();
+        Object proceed = joinPoint.proceed();
+        log.info("{}: {}", proceedName, Elapsed.elapsedTimeStr(elapsed.nanoSeconds()));
+        return proceed;
+    }
+    @Around("@annotation(com.its.rota.client.aspect.annotation.DbmsElapsed)")
+    public Object dbmsElapsedTime(ProceedingJoinPoint joinPoint) throws Throwable {
+        Object[] params = joinPoint.getArgs();
+        DbmsData dbmsData = null;
+        if (params.length > 0) {
+            if (params[0] instanceof DbmsData) {
+                dbmsData = (DbmsData) params[0];
+            }
+        }
+
+        String proceedName = String.format("%45s", joinPoint.getTarget().getClass().getSimpleName() + "." + joinPoint.getSignature().getName());
+        Elapsed elapsed = new Elapsed();
+        Object proceed = joinPoint.proceed();
+        if (dbmsData != null) {
+            switch(dbmsData.getType()) {
+                case DbmsData.DBMS_DATA_RCV_LINK_TRAFFIC:
+                    List<CurrentLinkState> trafficLists = (List<CurrentLinkState>) dbmsData.getData();
+                    log.info("{}: DBMS_DATA_RCV_LINK_TRAFFIC, {} EA. {}", proceedName, trafficLists.size(), Elapsed.elapsedTimeStr(elapsed.nanoSeconds()));
+                    break;
+                case DbmsData.DBMS_DATA_RCV_INCIDENT:
+                    List<IncidentConditions> incidentLists = (List<IncidentConditions>)dbmsData.getData();
+                    log.info("{}: DBMS_DATA_RCV_INCIDENT, {} EA. {}", proceedName, incidentLists.size(), Elapsed.elapsedTimeStr(elapsed.nanoSeconds()));
+                    break;
+                case DbmsData.DBMS_DATA_DELETE_RCV_LINK_TRAFFIC:
+                    log.info("{}: DBMS_DATA_DELETE_RCV_LINK_TRAFFIC, {}", proceedName, Elapsed.elapsedTimeStr(elapsed.nanoSeconds()));
+                    break;
+                case DbmsData.DBMS_DATA_DELETE_RCV_LOG:
+                    log.info("{}: DBMS_DATA_DELETE_RCV_LOG, {}", proceedName, Elapsed.elapsedTimeStr(elapsed.nanoSeconds()));
+                    break;
+                case DbmsData.DBMS_DATA_DELETE_RCV_INCIDENT:
+                    log.info("{}: DBMS_DATA_DELETE_RCV_INCIDENT, {}", proceedName, Elapsed.elapsedTimeStr(elapsed.nanoSeconds()));
+                    break;
+                default:
+                    break;
+            }
+        }
+        else {
+            log.info("{}: {}", proceedName, Elapsed.elapsedTimeStr(elapsed.nanoSeconds()));
+        }
+        return proceed;
+    }
+}

+ 4 - 0
src/main/java/com/its/rota/client/aspect/annotation/DbmsElapsed.java

@@ -0,0 +1,4 @@
+package com.its.rota.client.aspect.annotation;
+
+public @interface DbmsElapsed {
+}

+ 4 - 0
src/main/java/com/its/rota/client/aspect/annotation/ProcessElapsed.java

@@ -0,0 +1,4 @@
+package com.its.rota.client.aspect.annotation;
+
+public @interface ProcessElapsed {
+}

+ 4 - 0
src/main/java/com/its/rota/client/aspect/annotation/ScheduleElapsed.java

@@ -0,0 +1,4 @@
+package com.its.rota.client.aspect.annotation;
+
+public @interface ScheduleElapsed {
+}

+ 2 - 0
src/main/java/com/its/rota/client/process/dbms/DbmsDataProcess.java

@@ -3,6 +3,7 @@ package com.its.rota.client.process.dbms;
 import com.beanit.its.CurrentLinkState;
 import com.beanit.its.IncidentConditions;
 import com.its.app.common.utils.Elapsed;
+import com.its.rota.client.aspect.annotation.DbmsElapsed;
 import com.its.rota.client.common.SpringUtils;
 import com.its.rota.client.config.ThreadPoolInitializer;
 import com.its.rota.client.dao.mapper.IncidentMapper;
@@ -68,6 +69,7 @@ public class DbmsDataProcess {
         process(data);
     }
 
+    @DbmsElapsed
     public void process(DbmsData data) {
         int type = data.getType();
         int result = 0;

+ 0 - 1
src/main/java/com/its/rota/client/repository/ApplicationRepository.java

@@ -155,7 +155,6 @@ public class ApplicationRepository {
                 if (dto.getHeartBeat() > 300) {
                     dto.setHeartBeat(300);
                 }
-//                if (!"L99".equals(dto.getCenterId())) continue;
                 this.regionCenterMap.put(dto.getCenterId(), dto);
             }
         }

+ 4 - 0
src/main/java/com/its/rota/client/scheduler/ApplicationScheduler.java

@@ -1,5 +1,6 @@
 package com.its.rota.client.scheduler;
 
+import com.its.rota.client.aspect.annotation.ScheduleElapsed;
 import com.its.rota.client.config.SchedulingConfig;
 import com.its.rota.client.process.dbms.DbmsData;
 import com.its.rota.client.process.dbms.DbmsDataProcess;
@@ -35,6 +36,7 @@ public class ApplicationScheduler {
 //    public void unitSystSchedule() {
 //    }
 
+    @ScheduleElapsed
     @Async
     @Scheduled(cron = "${application.scheduler.delete-rcv-link-traffic:0/40 3 * * * *}")
     public void deleteRcvLinkTraffic() {
@@ -50,6 +52,7 @@ public class ApplicationScheduler {
         }
     }
 
+    @ScheduleElapsed
     @Async
     @Scheduled(cron = "${application.scheduler.delete-rcv-log:0/40 3 * * * *}")
     public void deleteRcvLog() {
@@ -65,6 +68,7 @@ public class ApplicationScheduler {
         }
     }
 
+    @ScheduleElapsed
     @Async
     @Scheduled(cron = "${application.scheduler.delete-rcv-incident:0/40 3 * * * *}")
     public void deleteRcvIncident() {

+ 52 - 0
src/main/resources/logback-spring-appender.xml

@@ -42,6 +42,19 @@
         </rollingPolicy>
     </appender>
 
+    <appender name="FILE_ASPECT" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_PATH}${LOG_FILE_NAME_ASPECT}</file>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <charset>${LOG_CHARSET}</charset>
+            <pattern>${LOG_PATTERN_ASPECT}</pattern>
+        </encoder>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_BACKUP_PATH}${LOG_FILE_ASPECT}.${LOG_FILE_NAME_PATTERN}</fileNamePattern>
+            <maxFileSize>${MAX_FILESIZE}</maxFileSize>
+            <maxHistory>${MAX_HISTORY}</maxHistory>
+        </rollingPolicy>
+    </appender>
+
     <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <level>error</level>
@@ -73,4 +86,43 @@
         </rollingPolicy>
     </appender>
 
+    <appender name="FILE_STATISTICS" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_PATH}${LOG_FILE_NAME_STATISTICS}</file>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <charset>${LOG_CHARSET}</charset>
+            <pattern>${LOG_PATTERN_STATISTICS}</pattern>
+        </encoder>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_BACKUP_PATH}${LOG_FILE_NAME_STATISTICS}.${LOG_FILE_NAME_PATTERN}</fileNamePattern>
+            <maxFileSize>${MAX_FILESIZE}</maxFileSize>
+            <maxHistory>${MAX_HISTORY}</maxHistory>
+        </rollingPolicy>
+    </appender>
+
+    <appender name="FILE_SCHEDULE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_PATH}${LOG_FILE_NAME_SCHEDULE}</file>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <charset>${LOG_CHARSET}</charset>
+            <pattern>${LOG_PATTERN_SCHEDULE}</pattern>
+        </encoder>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_BACKUP_PATH}${LOG_FILE_NAME_SCHEDULE}.${LOG_FILE_NAME_PATTERN}</fileNamePattern>
+            <maxFileSize>${MAX_FILESIZE}</maxFileSize>
+            <maxHistory>${MAX_HISTORY}</maxHistory>
+        </rollingPolicy>
+    </appender>
+
+    <appender name="FILE_SQL" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_PATH}${LOG_FILE_NAME_SQL}</file>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <charset>${LOG_CHARSET}</charset>
+            <pattern>${LOG_PATTERN_SQL}</pattern>
+        </encoder>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_BACKUP_PATH}${LOG_FILE_NAME_SQL}.${LOG_FILE_NAME_PATTERN}</fileNamePattern>
+            <maxFileSize>${MAX_FILESIZE}</maxFileSize>
+            <maxHistory>${MAX_HISTORY}</maxHistory>
+        </rollingPolicy>
+    </appender>
+
 </included>

+ 30 - 4
src/main/resources/logback-spring.xml

@@ -15,6 +15,9 @@
     <property name="LOG_FILE_NAME_PATTERN"     value="%d{yyyyMMdd}_%i.log.gz"/>
     <property name="LOG_FILE_NAME_PACKET"      value="${PROJECT_PREFIX}-packet"/>
     <property name="LOG_FILE_NAME_SESSION"     value="${PROJECT_PREFIX}-session.log"/>
+    <property name="LOG_FILE_NAME_SQL"         value="${PROJECT_PREFIX}-sql.log"/>
+    <property name="LOG_FILE_NAME_SCHEDULE"    value="${PROJECT_PREFIX}-schedule.log"/>
+    <property name="LOG_FILE_NAME_ASPECT"      value="${PROJECT_PREFIX}-aspect.log"/>
 
     <property name="MAX_FILESIZE" value="10MB"/>
     <property name="MAX_HISTORY"  value="10"/>
@@ -22,6 +25,9 @@
     <property name="LOG_PATTERN_ERROR"       value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%30t] [%5level] %42logger{35}.%-20M ${PID:-} %n%msg%n"/>
     <property name="LOG_PATTERN_PACKET"      value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %msg%n"/>
     <property name="LOG_PATTERN_SESSION"     value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %msg%n"/>
+    <property name="LOG_PATTERN_SQL"         value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %msg%n"/>
+    <property name="LOG_PATTERN_SCHEDULE"    value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %msg%n"/>
+    <property name="LOG_PATTERN_ASPECT"      value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %msg%n"/>
     <property name="LOG_PATTERN_CONSOLE"     value="[%d{HH:mm:ss.SSS}] [%5level] %msg %n"/>
 
     <springProfile name="!xxx">
@@ -34,15 +40,35 @@
         <appender-ref ref="FILE_ERROR"/>
     </root>
 
-    <logger name="${APP_CLASS_PATH}.udp" level="INFO" additivity="false">
-        <appender-ref ref="FILE_PACKET"/>
+    <logger name="${APP_CLASS_PATH}.service" level="INFO" additivity="false">
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="FILE_STATISTICS"/>
+        <appender-ref ref="FILE_ERROR"/>
+    </logger>
+
+    <logger name="${APP_CLASS_PATH}.scheduler" level="INFO" additivity="false">
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="FILE_SCHEDULE"/>
         <appender-ref ref="FILE_ERROR"/>
     </logger>
 
-    <logger name="${APP_CLASS_PATH}.udp" level="INFO" additivity="true">
-        <appender-ref ref="FILE_SESSION"/>
+    <logger name="${APP_CLASS_PATH}.aspect" level="INFO" additivity="false">
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="FILE_ASPECT"/>
+        <appender-ref ref="FILE_ERROR"/>
+    </logger>
+
+    <logger name="${APP_CLASS_PATH}.xnet" level="INFO" additivity="false">
+        <appender-ref ref="FILE_PACKET"/>
         <appender-ref ref="FILE_ERROR"/>
     </logger>
 
+    <logger name="jdbc" level="OFF"/>
+    <logger name="jdbc.sqlonly" level="OFF"/>
+    <logger name="jdbc.sqltiming" level="INFO"/>
+    <logger name="jdbc.audit" level="OFF"/>
+    <logger name="jdbc.resultset" level="OFF"/>
+    <logger name="jdbc.resultsettable" level="OFF"/>
+    <logger name="jdbc.connection" level="OFF"/>
 
 </configuration>