85 lines
2.7 KiB
JavaScript
85 lines
2.7 KiB
JavaScript
'use strict';
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const winston_1 = require("winston");
|
|
const path_1 = require("path");
|
|
const fs_extra_1 = require("fs-extra");
|
|
const os_1 = require("os");
|
|
const logTime = 'MM/DD/YY-HH:mm:ss';
|
|
let transport;
|
|
/**
|
|
* Determine the location of the log file based on the operating system
|
|
* and return as an absolute string from os.homedir()
|
|
*
|
|
* @returns {string} Path to log file
|
|
**/
|
|
async function logFile() {
|
|
const homeDir = os_1.homedir();
|
|
const linuxDir = `/.mcopy/`;
|
|
const macDir = `/Library/Logs/mcopy/`;
|
|
const winDir = `/AppData/Roaming/mcopy/`;
|
|
let logPath = path_1.normalize(path_1.join(homeDir, linuxDir));
|
|
let dirExists;
|
|
if (process.platform === 'darwin') {
|
|
logPath = path_1.normalize(path_1.join(homeDir, macDir));
|
|
}
|
|
else if (process.platform === 'win32') {
|
|
logPath = path_1.normalize(path_1.join(homeDir, winDir));
|
|
}
|
|
try {
|
|
dirExists = await fs_extra_1.exists(logPath);
|
|
}
|
|
catch (err) {
|
|
console.error(err);
|
|
}
|
|
if (!dirExists) {
|
|
try {
|
|
await fs_extra_1.mkdir(logPath);
|
|
}
|
|
catch (err) {
|
|
console.error(`Error creating directory for mcopy log file, ${logPath}`);
|
|
console.error(err);
|
|
}
|
|
}
|
|
return path_1.join(logPath, 'mcopy.log');
|
|
}
|
|
/**
|
|
* Create and return the logger transport based on settings determined in
|
|
* arguments object
|
|
*
|
|
* @param {object} arg Arguments from process
|
|
*
|
|
* @returns {object} Logger transport
|
|
**/
|
|
module.exports = async function (arg) {
|
|
let consoleFormat = {
|
|
colorize: true
|
|
};
|
|
let fileFormat = {
|
|
filename: await logFile(),
|
|
json: true
|
|
};
|
|
if (arg && arg.quiet) {
|
|
transport = {
|
|
info: function () { return false; },
|
|
warn: function () { return false; },
|
|
error: function () { return false; }
|
|
};
|
|
}
|
|
else {
|
|
if (arg && arg.label) {
|
|
consoleFormat.label = arg.label;
|
|
fileFormat.label = arg.label;
|
|
}
|
|
transport = winston_1.createLogger({
|
|
format: winston_1.format.combine(winston_1.format.label({ label: arg.label || 'mcopy' }), winston_1.format.timestamp({
|
|
format: 'YYYY-MM-DD HH:mm:ss'
|
|
}), winston_1.format.printf((info) => `${info.timestamp} [${info.label}] ${info.level}: ${info.message}` + (info.splat !== undefined ? `${info.splat}` : " "))),
|
|
transports: [
|
|
new (winston_1.transports.Console)(consoleFormat),
|
|
new (winston_1.transports.File)(fileFormat)
|
|
]
|
|
});
|
|
}
|
|
return transport;
|
|
};
|
|
//# sourceMappingURL=index.js.map
|