# 日志功能
方法说明中并非所有的方法都会写在文档中,具体请前往相关文件查看代码逻辑。
# 获取日志
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.js
中 defineLogs
部分
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
的日志文件。