logger: add calling filename as prefix on server side (#3926)

This commit is contained in:
Karsten Hassel
2025-10-22 22:50:31 +02:00
committed by GitHub
parent a1c1e9560c
commit bc0d36503a
15 changed files with 119 additions and 97 deletions

View File

@@ -24,7 +24,7 @@ class GitHelper {
const { stderr } = await this.execShell(`cd ${moduleFolder} && git remote -v`);
if (stderr) {
Log.error(`[updatenotification] Failed to fetch git data for ${moduleFolder}: ${stderr}`);
Log.error(`Failed to fetch git data for ${moduleFolder}: ${stderr}`);
return false;
}
@@ -40,7 +40,7 @@ class GitHelper {
}
try {
Log.info(`[updatenotification] Checking git for module: ${moduleName}`);
Log.info(`Checking git for module: ${moduleName}`);
// Throws error if file doesn't exist
fs.statSync(path.join(moduleFolder, ".git"));
@@ -72,7 +72,7 @@ class GitHelper {
const { stderr, stdout } = await this.execShell(`cd ${repo.folder} && git rev-parse HEAD`);
if (stderr) {
Log.error(`[updatenotification] Failed to get current commit hash for ${repo.module}: ${stderr}`);
Log.error(`Failed to get current commit hash for ${repo.module}: ${stderr}`);
}
gitInfo.hash = stdout;
@@ -81,7 +81,7 @@ class GitHelper {
const { stderr, stdout } = await this.execShell(`cd ${repo.folder} && git status -sb`);
if (stderr) {
Log.error(`[updatenotification] Failed to get git status for ${repo.module}: ${stderr}`);
Log.error(`Failed to get git status for ${repo.module}: ${stderr}`);
// exit without git status info
return;
}
@@ -151,7 +151,7 @@ class GitHelper {
const { stdout } = await this.execShell(`cd ${repo.folder} && git ls-remote -q --tags --refs`);
tagList = stdout.trim();
} catch (err) {
Log.error(`[updatenotification] Failed to get tag list for ${repo.module}: ${err}`);
Log.error(`Failed to get tag list for ${repo.module}: ${err}`);
}
// check if tag is between commits and only report behind > 0 if so
try {
@@ -162,13 +162,13 @@ class GitHelper {
}
if (cnt === 0) gitInfo.behind = 0;
} catch (err) {
Log.error(`[updatenotification] Failed to get git revisions for ${repo.module}: ${err}`);
Log.error(`Failed to get git revisions for ${repo.module}: ${err}`);
}
}
return gitInfo;
} catch (err) {
Log.error(`[updatenotification] Failed to get git revisions for ${repo.module}: ${err}`);
Log.error(`Failed to get git revisions for ${repo.module}: ${err}`);
}
}
@@ -183,7 +183,7 @@ class GitHelper {
this.gitResultList.push(gitInfo);
}
} catch (e) {
Log.error(`[updatenotification] Failed to retrieve repo info for ${repo.module}: ${e}`);
Log.error(`Failed to retrieve repo info for ${repo.module}: ${e}`);
}
}
@@ -196,7 +196,7 @@ class GitHelper {
const allRepos = await this.gitResultList.map((module) => {
return new Promise((resolve) => {
if (module.behind > 0 && module.module !== "MagicMirror") {
Log.info(`[updatenotification] Update found for module: ${module.module}`);
Log.info(`Update found for module: ${module.module}`);
updates.push(module);
}
resolve(module);

View File

@@ -51,7 +51,7 @@ class Updater {
this.PM2Id = null; // pm2 process number
this.version = global.version;
this.root_path = global.root_path;
Log.info("[updatenotification] Updater Class Loaded!");
Log.info("Updater Class Loaded!");
}
// [main command] parse if module update is needed
@@ -81,7 +81,7 @@ class Updater {
await Promise.all(parser);
let updater = Object.values(this.moduleList);
Log.debug("[updatenotification] Update Result:", updater);
Log.debug("Update Result:", updater);
return updater;
}
@@ -107,24 +107,24 @@ class Updater {
if (module.updateCommand) {
Command = module.updateCommand;
} else {
Log.warn(`[updatenotification] Update of ${module.name} is not supported.`);
Log.warn(`Update of ${module.name} is not supported.`);
return Result;
}
Log.info(`[updatenotification] Updating ${module.name}...`);
Log.info(`Updating ${module.name}...`);
return new Promise((resolve) => {
Exec(Command, { cwd: modulePath, timeout: this.timeout }, (error, stdout, stderr) => {
if (error) {
Log.error(`[updatenotification] exec error: ${error}`);
Log.error(`exec error: ${error}`);
Result.error = true;
} else {
Log.info(`[updatenotification]:Update logs of ${module.name}: ${stdout}`);
Log.info(`Update logs of ${module.name}: ${stdout}`);
Result.updated = true;
if (this.autoRestart) {
Log.info("[updatenotification] Update done");
Log.info("Update done");
setTimeout(() => this.restart(), 3000);
} else {
Log.info("[updatenotification] Update done, don't forget to restart MagicMirror!");
Log.info("Update done, don't forget to restart MagicMirror!");
Result.needRestart = true;
}
}
@@ -141,18 +141,18 @@ class Updater {
// restart MagicMirror with "pm2": use PM2Id for restart it
pm2Restart () {
Log.info("[updatenotification] [PM2] restarting MagicMirror...");
Log.info("[PM2] restarting MagicMirror...");
const pm2 = require("pm2");
pm2.restart(this.PM2Id, (err, proc) => {
if (err) {
Log.error("[updatenotification] [PM2] restart Error", err);
Log.error("[PM2] restart Error", err);
}
});
}
// restart MagicMirror with "node --run start"
nodeRestart () {
Log.info("[updatenotification] Restarting MagicMirror...");
Log.info("Restarting MagicMirror...");
const out = process.stdout;
const err = process.stderr;
const subprocess = Spawn("node --run start", { cwd: this.root_path, shell: true, detached: true, stdio: ["ignore", out, err] });
@@ -162,49 +162,49 @@ class Updater {
// Check using pm2
check_PM2_Process () {
Log.info("[updatenotification] Checking PM2 using...");
Log.info("Checking PM2 using...");
return new Promise((resolve) => {
if (fs.existsSync("/.dockerenv")) {
Log.info("[updatenotification] Running in docker container, not using PM2 ...");
Log.info("[PM2] Running in docker container, not using PM2 ...");
resolve(false);
return;
}
if (process.env.unique_id === undefined) {
Log.info("[updatenotification] [PM2] You are not using pm2");
Log.info("[PM2] You are not using pm2");
resolve(false);
return;
}
Log.debug(`[updatenotification] [PM2] Search for pm2 id: ${process.env.pm_id} -- name: ${process.env.name} -- unique_id: ${process.env.unique_id}`);
Log.debug(`[PM2] Search for pm2 id: ${process.env.pm_id} -- name: ${process.env.name} -- unique_id: ${process.env.unique_id}`);
const pm2 = require("pm2");
pm2.connect((err) => {
if (err) {
Log.error("[updatenotification] [PM2]", err);
Log.error("[PM2]", err);
resolve(false);
return;
}
pm2.list((err, list) => {
if (err) {
Log.error("[updatenotification] [PM2] Can't get process List!");
Log.error("[PM2] Can't get process List!");
resolve(false);
return;
}
list.forEach((pm) => {
Log.debug(`[updatenotification] [PM2] found pm2 process id: ${pm.pm_id} -- name: ${pm.name} -- unique_id: ${pm.pm2_env.unique_id}`);
Log.debug(`[PM2] found pm2 process id: ${pm.pm_id} -- name: ${pm.name} -- unique_id: ${pm.pm2_env.unique_id}`);
if (pm.pm2_env.status === "online" && process.env.name === pm.name && +process.env.pm_id === +pm.pm_id && process.env.unique_id === pm.pm2_env.unique_id) {
this.PM2Id = pm.pm_id;
this.usePM2 = true;
Log.info(`[updatenotification] [PM2] You are using pm2 with id: ${this.PM2Id} (${pm.name})`);
Log.info(`[PM2] You are using pm2 with id: ${this.PM2Id} (${pm.name})`);
resolve(true);
} else {
Log.debug(`[updatenotification] [PM2] pm2 process id: ${pm.pm_id} don't match...`);
Log.debug(`[PM2] pm2 process id: ${pm.pm_id} don't match...`);
}
});
pm2.disconnect();
if (!this.usePM2) {
Log.info("[updatenotification] [PM2] You are not using pm2");
Log.info("[PM2] You are not using pm2");
resolve(false);
}
});