刘洋 vor 1 Jahr
Ursprung
Commit
8d2d2f666a
5 geänderte Dateien mit 81 neuen und 3 gelöschten Zeilen
  1. 1 0
      package.json
  2. 4 2
      src/features/ImageDownload/ImageDownload.vue
  3. 67 0
      src/lib/log.ts
  4. 4 1
      src/preload.ts
  5. 5 0
      yarn.lock

+ 1 - 0
package.json

@@ -20,6 +20,7 @@
     "axios-progress-bar": "^1.2.0",
     "axios-retry": "^3.1.9",
     "core-js": "^3.6.5",
+    "electron-log": "^4.4.8",
     "gm": "^1.23.1",
     "gm-base64": "^1.1.1",
     "image-size": "^0.6.3",

+ 4 - 2
src/features/ImageDownload/ImageDownload.vue

@@ -124,7 +124,7 @@ onMounted(async () => {
           (accumulator, stu) => accumulator.concat(stu.sheetUrls),
           []
         );
-        cacheImages(urls);
+        // cacheImages(urls);
 
         for (const student of students) {
           let allTags = Object.values(student.tags || {})
@@ -231,6 +231,7 @@ onMounted(async () => {
               );
               resultImgList.push(fileLocation);
             } catch (error) {
+              window.electron.errorLogger(student, sheetUrl, error);
               errorCount.value += 1;
               if (config.failover) {
                 throw error;
@@ -306,7 +307,7 @@ async function processPackage() {
   const array = res.data;
   totalCount.value = array.length;
   const urls = array.reduce((accumulator, p) => accumulator.concat(p.urls), []);
-  cacheImages(urls);
+  // cacheImages(urls);
 
   for (let i = 0; i < array.length; i++) {
     const p = array[i];
@@ -333,6 +334,7 @@ async function processPackage() {
           filePath
         );
       } catch (error) {
+        window.electron.errorLogger2(p.urls[i], error);
         errorCount.value += 1;
         if (config.failover) {
           throw error;

+ 67 - 0
src/lib/log.ts

@@ -0,0 +1,67 @@
+import path from "path";
+
+/* 日期格式化 */
+export const dateFormat = (
+  date: any,
+  fmt = "yyyy-MM-dd hh:mm:ss",
+  isDefault = "-"
+) => {
+  if (date.toString().length === 10) {
+    date *= 1000;
+  }
+  date = new Date(date);
+
+  if (date.valueOf() < 1) {
+    return isDefault;
+  }
+  const o: any = {
+    "M+": date.getMonth() + 1, // 月份
+    "d+": date.getDate(), // 日
+    "h+": date.getHours(), // 小时
+    "m+": date.getMinutes(), // 分
+    "s+": date.getSeconds(), // 秒
+    "q+": Math.floor((date.getMonth() + 3) / 3), // 季度
+    S: date.getMilliseconds(), // 毫秒
+  };
+  if (/(y+)/.test(fmt)) {
+    fmt = fmt.replace(
+      RegExp.$1,
+      `${date.getFullYear()}`.substr(4 - RegExp.$1.length)
+    );
+  }
+  for (const k in o) {
+    if (new RegExp(`(${k})`).test(fmt)) {
+      fmt = fmt.replace(
+        RegExp.$1,
+        RegExp.$1.length === 1 ? o[k] : `00${o[k]}`.substr(`${o[k]}`.length)
+      );
+    }
+  }
+  return fmt;
+};
+
+const zlog = require("electron-log");
+const filepath: string = process.env.PORTABLE_EXECUTABLE_DIR || "";
+const nowdate = Date.now();
+const nowdate_str = dateFormat(nowdate, "yyyy-MM-dd");
+const filename = "download_" + nowdate_str + ".log";
+zlog.transports.file.resolvePath = () => path.join(filepath, filename);
+zlog.transports.file.level = true;
+zlog.transports.console.level = false;
+
+export async function errorLogger(student: any, imgUrl: string, error: any) {
+  let str = "download - 图片下载发生错误:\n";
+  str += `          名称:${student.name};\n`;
+  str += `          学号:${student.studentCode};\n`;
+  str += `          科目:${student.subjectName};\n`;
+  str += `          图片地址:${imgUrl};\n`;
+  str += `          [ ${error.toString()} ]\n`;
+  zlog.error(str);
+}
+
+export async function errorLogger2(imgUrl: string, error: any) {
+  let str = "download - 图片下载发生错误:\n";
+  str += `          签到表图片:${imgUrl};\n`;
+  str += `          [ ${error.toString()} ]\n`;
+  zlog.error(str);
+}

+ 4 - 1
src/preload.ts

@@ -4,6 +4,7 @@ import config from "./lib/config";
 import { existsImage, saveImage, addWatermark } from "./lib/watermark";
 import { queryStudentCount, replaceStudents, replacePackage } from "./lib/sync";
 import { saveToPDF } from "./lib/pdfUtil";
+import { errorLogger, errorLogger2 } from "./lib/log";
 export const electronInWindow = {
   dialog: remote.dialog,
   config,
@@ -13,7 +14,9 @@ export const electronInWindow = {
   replaceStudents,
   replacePackage,
   existsImage,
-  saveToPDF
+  saveToPDF,
+  errorLogger,
+  errorLogger2,
 };
 
 contextBridge.exposeInMainWorld("electron", electronInWindow);

+ 5 - 0
yarn.lock

@@ -4587,6 +4587,11 @@ electron-devtools-installer@^3.1.0:
     tslib "^2.1.0"
     unzip-crx-3 "^0.2.0"
 
+electron-log@^4.4.8:
+  version "4.4.8"
+  resolved "https://registry.npmmirror.com/electron-log/-/electron-log-4.4.8.tgz#fcb9f714dbcaefb6ac7984c4683912c74730248a"
+  integrity sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA==
+
 electron-osx-sign@^0.5.0:
   version "0.5.0"
   resolved "https://registry.npmmirror.com/electron-osx-sign/-/electron-osx-sign-0.5.0.tgz#fc258c5e896859904bbe3d01da06902c04b51c3a"