@zowe/imperative
Version:
framework for building configurable CLIs
113 lines • 4.6 kB
JavaScript
/*
* This program and the accompanying materials are made available under the terms of the
* Eclipse Public License v2.0 which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-v20.html
*
* SPDX-License-Identifier: EPL-2.0
*
* Copyright Contributors to the Zowe Project.
*
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.LoggerConfigBuilder = void 0;
const path = require("path");
const os = require("os");
class LoggerConfigBuilder {
/**
* Build a fully qualified directory to a log file - defaults to the users home directory - Imperative
* does NOT use this as the home is set by the CLI configuration document.
* @param {string} name - name of the file to append to fully qualified directory
*/
static buildFullLogFile(name) {
return path.normalize(os.homedir() + name);
}
/**
* Returns the constant values defined within the LoggerConfigBuilder for this config object
* @return {IConfigLogging} - default object built
*/
static getDefaultIConfigLogging() {
const config = {
log4jsConfig: {
appenders: {},
categories: {},
}
};
return config;
}
/**
* Returns the constant values defined within the LoggerConfigBuilder for this config object
* @return {IConfigLogging} - default object built
*/
static addConsoleAppender(config, key, categoryName = key, logLevel) {
config.log4jsConfig.appenders[key] = {
type: LoggerConfigBuilder.DEFAULT_LOG_TYPE_CONSOLE,
layout: {
type: LoggerConfigBuilder.DEFAULT_LOG_TYPE_PAT,
pattern: LoggerConfigBuilder.DEFAULT_COLOR_LAYOUT,
},
};
config.log4jsConfig.categories[categoryName] = {
appenders: [key],
level: logLevel ? logLevel : LoggerConfigBuilder.getDefaultLogLevel(),
};
return config;
}
/**
* Returns the constant values defined within the LoggerConfigBuilder for this config object
* @return {IConfigLogging} - default object built
*/
static addFileAppender(config, key, categoryName = key, filename = LoggerConfigBuilder.buildFullLogFile(LoggerConfigBuilder.getDefaultFileName(key)), logLevel) {
config.log4jsConfig.appenders[key] = {
filename,
type: LoggerConfigBuilder.DEFAULT_LOG_TYPE_FILE_SYNC,
maxLogSize: LoggerConfigBuilder.DEFAULT_LOG_FILE_MAX_SIZE,
backups: LoggerConfigBuilder.DEFAULT_LOG_FILE_BACKUPS,
layout: {
type: LoggerConfigBuilder.DEFAULT_LOG_TYPE_PAT,
pattern: LoggerConfigBuilder.DEFAULT_LOG_LAYOUT,
},
};
config.log4jsConfig.categories[categoryName] = {
appenders: [key],
level: logLevel ? logLevel : LoggerConfigBuilder.getDefaultLogLevel(),
};
return config;
}
/**
* Returns the log file name that will be used
* @return {string} - the default file name for the log file
*/
static getDefaultFileName(name) {
return path.posix.sep + path.posix.join(LoggerConfigBuilder.DEFAULT_LOGS_DIR, name + LoggerConfigBuilder.DEFAULT_LOG_FILE_EXT);
}
/**
* Returns the log level that will be used if not overridden
* @returns {string} - the default log level
*/
static getDefaultLogLevel() {
return process.env.NODE_ENV === "development" ? "DEBUG" : "WARN";
}
}
exports.LoggerConfigBuilder = LoggerConfigBuilder;
LoggerConfigBuilder.DEFAULT_LANG = "en";
LoggerConfigBuilder.DEFAULT_LOG_TYPE_CONSOLE = "console";
LoggerConfigBuilder.DEFAULT_LOG_TYPE_PAT = "pattern";
LoggerConfigBuilder.DEFAULT_LOG_LAYOUT = "[%d{yyyy/MM/dd} %d{hh:mm:ss.SSS}] [%p] %m";
LoggerConfigBuilder.DEFAULT_COLOR_LAYOUT = "%[" + LoggerConfigBuilder.DEFAULT_LOG_LAYOUT + "%]";
LoggerConfigBuilder.DEFAULT_LOG_TYPE_FILE_SYNC = "fileSync";
LoggerConfigBuilder.DEFAULT_BACKEND = "NONE";
LoggerConfigBuilder.DEFAULT = "default";
/**
* @deprecated Use `DEFAULT_LOGS_DIR` instead.
*/
LoggerConfigBuilder.DEFAULT_LOG_DIR = path.posix.sep;
/**
* @deprecated Use `DEFAULT_LOGS_DIR` instead.
*/
LoggerConfigBuilder.DEFAULT_LOG_FILE_DIR = "logs" + path.posix.sep;
LoggerConfigBuilder.DEFAULT_LOGS_DIR = "logs";
LoggerConfigBuilder.DEFAULT_LOG_FILE_EXT = ".log";
LoggerConfigBuilder.DEFAULT_LOG_FILE_MAX_SIZE = 10000000; // 10MB log size
LoggerConfigBuilder.DEFAULT_LOG_FILE_BACKUPS = 5;
//# sourceMappingURL=LoggerConfigBuilder.js.map
;