# 日志功能

方法说明中并非所有的方法都会写在文档中,具体请前往相关文件查看代码逻辑。

# 获取日志

TIP

通常情况下,不同操作系统的日志在以下路径中 Linux: ~/.config/致信/logs/{process type}.log macOS: ~/Library/Logs/致信/{process type}.log Windows: %USERPROFILE%\AppData\Roaming\致信\logs{process type}.log

主进程日志输出为:main.js 渲染进程日志输出为:render.js

# 如何使用日志功能

# 客户端添加日志

客户端在对应 JS 文件下,直接引入

const log = require("electron-log");
log.debug("这是一个日志");

# 在 WEB 端调用

在 WEB 端中引用方式:

const File = ZxDesktop.require("File");
File.logger.debug("这是一个日志");

# 如何自定义日志

可以参考 WEB 端代码 public\static\client\client_pc\file.jsdefineLogs 部分

let DEFINE_LOG = {};
function defineLogs(params) {
  const App = ZxDesktop.require("App");
  const File = ZxDesktop.require("File");

  // 初始化参数
  let { name = "自定义的日志" + ".log", path = "" } = params;

  // 路径拼接,生成
  let logPath = File.path.resolve(
    App.PATH,
    "ZhiXin",
    "Logs",
    "自定义的日志",
    path,
    name
  );

  // 返回路径
  function resolvePath(variables) {
    return logPath;
  }

  // 如果自定义的日志存在,则直接用,不存在就初始化
  if (logPath in DEFINE_LOG) {
    return DEFINE_LOG[logPath].log;
  } else {
    DEFINE_LOG[logPath] = File.logger.create("anotherInstance");
    DEFINE_LOG[logPath].transports.file.resolvePath = resolvePath;
    return DEFINE_LOG[logPath].log;
  }
}

let diyLogA = defineLogs({
  name: "自定义的日志1",
  path: "自定义的日志路径",
});

let diyLogB = defineLogs({
  name: "自定义的日志2",
  path: "自定义的日志路径2",
});

diyLogA.debug("日志1");
diyLogA.debug("日志2");
diyLogA.debug("日志3");

diyLogB.debug("日志1");
diyLogB.debug("日志2");
diyLogB.debug("日志3");

# WEB 端调用日志方法

可以参考WEB端 src\control\message\messageRecive.js 的代码


let RYMessagesLog = ZX_CLIENT.defineLogs({
  name: userId + ".log",
  path: "RYMessagesLog",
});

let OACardMsgLog = ZX_CLIENT.defineLogs({
  name: userId + ".log",
  path: "OACardMsgLog",
});

RYMessagesLog("### 收到新融云消息 ###", message)
OACardMsgLog('******收到消息卡片《'+message.content.content+'》的消息******',message)

这时候文件夹 %AppData%\Roaming\ZhiXin\Logs\当前日期 中会出现2个名称为 OACardMsgLog RYMessagesLog 的文件夹,文件夹下有 {用户ID}.log 的日志文件。