43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
// scanner/logger.js
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const LOG_MODE = process.env.LOG_MODE || "console"; // console | file | both
|
|
const LOG_DIR = process.env.LOG_DIR || null;
|
|
const LOG_FILE = process.env.LOG_FILE || "scan.log";
|
|
|
|
let stream = null;
|
|
|
|
function resolveLogPath() {
|
|
if (LOG_DIR) {
|
|
return path.resolve(__dirname, "..", "..", LOG_DIR, LOG_FILE);
|
|
}
|
|
return path.resolve(__dirname, "..", "..", LOG_FILE);
|
|
}
|
|
|
|
if (LOG_MODE === "file" || LOG_MODE === "both") {
|
|
const logPath = resolveLogPath();
|
|
|
|
// crea la directory se non esiste
|
|
fs.mkdirSync(path.dirname(logPath), { recursive: true });
|
|
|
|
stream = fs.createWriteStream(logPath, { flags: "a" });
|
|
}
|
|
|
|
function ts() {
|
|
return new Date().toISOString().replace("T", " ").split(".")[0];
|
|
}
|
|
|
|
function log(message) {
|
|
const line = `${ts()} ${message}\n`;
|
|
|
|
if (LOG_MODE === "console" || LOG_MODE === "both") {
|
|
process.stdout.write(line);
|
|
}
|
|
|
|
if (LOG_MODE === "file" || LOG_MODE === "both") {
|
|
stream.write(line);
|
|
}
|
|
}
|
|
|
|
module.exports = { log };
|