xueyiming 7 месяцев назад
Родитель
Сommit
d6c8237df7

+ 12 - 0
pom.xml

@@ -23,6 +23,18 @@
         <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.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-log4j2</artifactId>
         </dependency>
 
         <dependency>

+ 4 - 2
we-com-server/src/main/java/com/tzld/piaoquan/wecom/job/WeComHistoryDataJob.java

@@ -19,6 +19,7 @@ import com.tzld.piaoquan.wecom.utils.MessageUtil;
 import com.tzld.piaoquan.wecom.utils.page.Page;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,6 +33,7 @@ import java.util.List;
 
 import static com.tzld.piaoquan.wecom.common.constant.WeComConstant.GET_HISTORY_DATA_URL;
 
+@Slf4j
 @Component
 public class WeComHistoryDataJob {
 
@@ -85,7 +87,7 @@ public class WeComHistoryDataJob {
             int page = total / size + 1;
             for (int n = 0; n < page; n++) {
                 String res = getHistoryData(size, n * size, startTime, endTime);
-                //TODO 记录查询数据 info日志
+                log.info("selectHistoryMessage size={}, n={}, startTime={}, endTime={}, res={}", size, n, startTime, endTime, res);
                 if (ObjectUtils.isEmpty(res)) {
                     return;
                 }
@@ -134,7 +136,7 @@ public class WeComHistoryDataJob {
                 }
             }
         } catch (IOException e) {
-            e.printStackTrace();
+            log.error("selectHistoryMessage error", e);
         }
     }
 

+ 9 - 3
we-com-server/src/main/java/com/tzld/piaoquan/wecom/job/WeComMessageDataJob.java

@@ -15,6 +15,7 @@ import com.tzld.piaoquan.wecom.utils.OdpsUtil;
 import com.tzld.piaoquan.wecom.utils.page.Page;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +29,7 @@ import java.util.stream.Collectors;
 import static com.tzld.piaoquan.wecom.common.constant.RedisConstant.GUARANTEED_MINIPROGRAM_KEY;
 import static com.tzld.piaoquan.wecom.common.constant.TimeConstant.MILLISECOND_DAY;
 
+@Log4j2
 @Component
 public class WeComMessageDataJob {
 
@@ -92,6 +94,7 @@ public class WeComMessageDataJob {
         List<Long> videoIdList = Objects.requireNonNull(redisTemplate.opsForList().range(GUARANTEED_MINIPROGRAM_KEY, 0, -1))
                 .stream().map(o -> (Integer) o).map(String::valueOf).map(Long::parseLong).collect(Collectors.toList());
         if (CollectionUtils.isEmpty(videoIdList)) {
+            log.error("推送消息初始化失败,保底数据为空");
             throw new RuntimeException("保底数据为空");
         }
         List<Long> saveVideoIds = new ArrayList<>();
@@ -114,6 +117,7 @@ public class WeComMessageDataJob {
             }
         }
         if (saveVideoIds.size() < MAX_VIDEO_NUM) {
+            log.error("推送消息初始化失败,保底数据不足");
             throw new RuntimeException("保底数据不足");
         }
         guaranteedVideoIdList = saveVideoIds;
@@ -161,6 +165,7 @@ public class WeComMessageDataJob {
             updateMessageAttachment.setSendTime(new Date());
             messageAttachmentMapper.updateByPrimaryKeySelective(updateMessageAttachment);
         }
+        log.info("getGuaranteedVideoIdNum={}", getGuaranteedVideoIdNum);
         //移除从redis中获取的保底数据
         for (int i = 0; i < getGuaranteedVideoIdNum; i++) {
             redisTemplate.opsForList().leftPop(GUARANTEED_MINIPROGRAM_KEY);
@@ -207,7 +212,8 @@ public class WeComMessageDataJob {
             }
         }
         if (n < MAX_VIDEO_NUM) {
-            throw new RuntimeException("保底数据异常");
+            log.error("组装数据失败 user={}", user);
+            return null;
         }
         StaffWithUserExample example = new StaffWithUserExample();
         example.createCriteria().andUserIdEqualTo(user.getId());
@@ -317,11 +323,11 @@ public class WeComMessageDataJob {
             newJSONObject.put("staff_eu_list", staffEuList);
             pushList.add(newJSONObject);
         }
-
         if (CollectionUtils.isEmpty(pushList)) {
-            throw new RuntimeException("推送视频生成失败");
+            return false;
         }
         for (JSONObject pushJsonObject : pushList) {
+            log.info("pushMessage pushJsonObject={}", pushJsonObject);
             boolean flag = messageService.pushMessage(pushJsonObject);
             if (!flag) {
                 return flag;

+ 8 - 7
we-com-server/src/main/java/com/tzld/piaoquan/wecom/job/WeComUserDataJob.java

@@ -13,6 +13,7 @@ import com.tzld.piaoquan.wecom.utils.HttpPoolClient;
 import com.tzld.piaoquan.wecom.utils.page.Page;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.checkerframework.checker.units.qual.A;
@@ -26,6 +27,7 @@ import java.util.List;
 
 import static com.tzld.piaoquan.wecom.common.constant.WeComConstant.*;
 
+@Slf4j
 @Component
 public class WeComUserDataJob {
 
@@ -76,6 +78,7 @@ public class WeComUserDataJob {
             int sum = 0;
             for (int i = 0; i < page; i++) {
                 String res = getUser(size, i * size, startTime, endTime, staff.getStaffExtId());
+                log.info("insertAllUser size={}, i={}, staffExtId = {}, startTime={}, endTime={}, res={}", size, i, staff.getStaffExtId(), startTime, endTime, res);
                 if (ObjectUtils.isEmpty(res)) {
                     continue;
                 }
@@ -112,13 +115,13 @@ public class WeComUserDataJob {
                 }
                 if (jsonArray.size() < size) {
                     if (total > sum) {
-                        System.out.println("插入数量不足");
+                        log.error("insertAllUser插入数量不足 total = {}, sum={}", total, sum);
                     }
                     break;
                 }
             }
         } catch (Exception e) {
-            e.printStackTrace();
+            log.error("insertAllUser error", e);
         }
     }
 
@@ -175,6 +178,7 @@ public class WeComUserDataJob {
             int sum = 0;
             for (int i = 0; i < page; i++) {
                 String res = getUpdateUser(size, i * size, startTime, endTime, staff.getStaffExtId());
+                log.info("updateUser size={}, i={}, staffExtId = {}, startTime={}, endTime={}, res={}", size, i, staff.getStaffExtId(), startTime, endTime, res);
                 if (ObjectUtils.isEmpty(res)) {
                     continue;
                 }
@@ -215,16 +219,13 @@ public class WeComUserDataJob {
                 }
                 if (jsonArray.size() < size) {
                     if (total > sum) {
-                        //TODO 输出异常  插入数量不足
-                        System.out.println(total);
-                        System.out.println(sum);
-                        System.out.println("插入数量不足");
+                        log.error("updateUser插入数量不足 total = {}, sum={}", total, sum);
                     }
                     break;
                 }
             }
         } catch (IOException e) {
-            e.printStackTrace();
+            log.error("updateUser error", e);
         }
     }
 

+ 3 - 2
we-com-server/src/main/java/com/tzld/piaoquan/wecom/service/Impl/AccessTokenServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.tzld.piaoquan.wecom.service.AccessTokenService;
 import com.tzld.piaoquan.wecom.utils.HttpClientUtil;
 import com.tzld.piaoquan.wecom.utils.HttpPoolClient;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -15,6 +16,7 @@ import java.util.concurrent.TimeUnit;
 import static com.tzld.piaoquan.wecom.common.constant.RedisConstant.ACCESS_TOKEN;
 import static com.tzld.piaoquan.wecom.common.constant.WeComConstant.*;
 
+@Slf4j
 @Service
 public class AccessTokenServiceImpl implements AccessTokenService {
 
@@ -40,8 +42,7 @@ public class AccessTokenServiceImpl implements AccessTokenService {
             redisTemplate.opsForValue().set(ACCESS_TOKEN, newAccessToken, expiresIn, TimeUnit.SECONDS);
             return newAccessToken;
         } catch (IOException e) {
-            //TODO 打印错误日志
-            e.printStackTrace();
+            log.error("getAccessToken error", e);
         }
         return "";
     }

+ 4 - 1
we-com-server/src/main/java/com/tzld/piaoquan/wecom/service/Impl/MessageServiceImpl.java

@@ -8,6 +8,7 @@ import com.tzld.piaoquan.wecom.service.AccessTokenService;
 import com.tzld.piaoquan.wecom.service.MessageService;
 import com.tzld.piaoquan.wecom.utils.HttpClientUtil;
 import com.tzld.piaoquan.wecom.utils.HttpPoolClient;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -21,6 +22,7 @@ import static com.tzld.piaoquan.wecom.common.enums.ExceptionCodeEnum.PARAMS_ERRO
 import static com.tzld.piaoquan.wecom.common.constant.WeComConstant.POST_MESSAGE_PUSH_URL;
 
 
+@Slf4j
 @Service
 public class MessageServiceImpl implements MessageService {
 
@@ -40,10 +42,11 @@ public class MessageServiceImpl implements MessageService {
             String s = httpPoolClientDefault.post(url, jsonObject.toJSONString());
             System.out.println(s);
             JSONObject res = JSONObject.parseObject(s);
+            log.info("MessageServiceImpl pushMessage res={}", res);
             Integer code = res.getInteger("errcode");
             return code == 0;
         } catch (IOException e) {
-            e.printStackTrace();
+            log.error("MessageServiceImpl pushMessage error", e);
         }
         return false;
     }

+ 2 - 0
we-com-server/src/main/resources/application.properties

@@ -1,3 +1,5 @@
+logging.config=classpath:log4j2.xml
+
 spring.datasource.username=crawler
 spring.datasource.password=crawler123456@
 spring.datasource.url=jdbc:mysql://rm-bp1159bu17li9hi94.mysql.rds.aliyuncs.com:3306/piaoquan-crawler?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true

+ 94 - 0
we-com-server/src/main/resources/log4j2.xml

@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
+<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
+<configuration monitorInterval="5">
+    <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
+
+    <!--变量配置-->
+    <Properties>
+        <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
+        <!-- %logger{36} 表示 Logger 名字最长36个字符 -->
+        <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36}  - %msg%n" />
+        <!-- 定义日志存储的路径,不要配置相对路径 -->
+        <property name="FILE_PATH" value="/datalog" />
+        <!--项目名称-->
+        <property name="FILE_NAME" value="we_com_server" />
+    </Properties>
+
+    <appenders>
+
+        <console name="Console" target="SYSTEM_OUT">
+            <!--输出日志的格式-->
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+            <!--控制台只输出level及其以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
+            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
+        </console>
+
+
+        <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
+        <RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/${FILE_NAME}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz">
+            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
+            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+            <Policies>
+                <!--interval属性用来指定多久滚动一次,默认是1 hour-->
+                <TimeBasedTriggeringPolicy interval="1"/>
+                <SizeBasedTriggeringPolicy size="10MB"/>
+            </Policies>
+            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
+            <DefaultRolloverStrategy max="15"/>
+        </RollingFile>
+
+        <!-- 这个会打印出所有的warn及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
+        <RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/${FILE_NAME}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
+            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
+            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+            <Policies>
+                <!--interval属性用来指定多久滚动一次,默认是1 hour-->
+                <TimeBasedTriggeringPolicy interval="1"/>
+                <SizeBasedTriggeringPolicy size="10MB"/>
+            </Policies>
+            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
+            <DefaultRolloverStrategy max="15"/>
+        </RollingFile>
+
+        <!-- 这个会打印出所有的error及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
+        <RollingFile name="RollingFileError" fileName="${FILE_PATH}/${FILE_NAME}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
+            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
+            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+            <Policies>
+                <!--interval属性用来指定多久滚动一次,默认是1 hour-->
+                <TimeBasedTriggeringPolicy interval="1"/>
+                <SizeBasedTriggeringPolicy size="10MB"/>
+            </Policies>
+            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
+            <DefaultRolloverStrategy max="15"/>
+        </RollingFile>
+
+    </appenders>
+
+    <!--Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。-->
+    <!--然后定义loggers,只有定义了logger并引入的appender,appender才会生效-->
+    <loggers>
+
+        <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
+        <logger name="org.mybatis" level="info" additivity="false">
+            <AppenderRef ref="Console"/>
+        </logger>
+        <!--监控系统信息-->
+        <!--若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。-->
+        <Logger name="org.springframework" level="info" additivity="false">
+            <AppenderRef ref="Console"/>
+        </Logger>
+
+        <root level="info">
+            <appender-ref ref="Console"/>
+            <appender-ref ref="Filelog"/>
+            <appender-ref ref="RollingFileInfo"/>
+            <appender-ref ref="RollingFileWarn"/>
+            <appender-ref ref="RollingFileError"/>
+        </root>
+    </loggers>
+</configuration>