Adding File-Logger

This commit is contained in:
Martin Karkowski 2021-10-18 07:56:24 +02:00
parent 469bd65c41
commit 09677083aa

View File

@ -18,6 +18,7 @@ import {
} from "../communication/getLayer.nodejs";
import { getPackageLoader } from "../loader/getPackageLoader";
import { loadFunctions, loadPackages } from "../loader/loadPackages";
import { generateLogfilePath, useLogFile } from "../logger/fileLogging";
import { getNopeLogger } from "../logger/getLogger";
import { LoggerLevel, LoggerLevels } from "../logger/nopeLogger";
import { setGlobalLoggerLevel } from "../logger/setGlobalLoggerLevel";
@ -106,6 +107,13 @@ export async function readInArgs(
dest: "forceEmittingUpdates"
});
parser.addArgument(["--log-to-file"], {
help: "Log will be stored in a logfile.",
action: "append",
nargs: "?",
dest: "logToFile"
});
parser.addArgument(["-l", "--log"], {
help:
"Specify the Logger Level. Defaults to \"info\". Valid values are: " +
@ -119,11 +127,20 @@ export async function readInArgs(
help:
"Specify the Logger Level of the Dispatcher. Defaults to \"info\". Valid values are: " +
LoggerLevels.join(", "),
defaultValue: "debug",
defaultValue: "info",
type: "string",
dest: "dispatcherLogLevel"
});
parser.addArgument(["--communication-log"], {
help:
"Specify the Logger Level of the Communication. Defaults to \"info\". Valid values are: " +
LoggerLevels.join(", "),
defaultValue: "info",
type: "string",
dest: "communicationLogLevel"
});
const args: {
file: string;
channel: keyof typeof validLayers;
@ -132,8 +149,9 @@ export async function readInArgs(
log: LoggerLevel;
forceEmittingUpdates?: boolean;
defaultSelector: ValidDefaultSelectors
// The default-selector to select the service providers
dispatcherLogLevel: LoggerLevel
communicationLogLevel?: LoggerLevel,
logToFile?: boolean
} = parser.parseArgs();
if (args.params === "not-provided") {
@ -142,6 +160,7 @@ export async function readInArgs(
args.skipLoadingConfig = Array.isArray(args.skipLoadingConfig);
args.forceEmittingUpdates = Array.isArray(args.forceEmittingUpdates);
args.logToFile = Array.isArray(args.logToFile);
return args;
}
@ -165,6 +184,10 @@ export async function runNopeBackend(
defaultSelector?: ValidDefaultSelectors;
// The default-selector to select the service providers
dispatcherLogLevel?: LoggerLevel
// The default-selector to select the service providers
communicationLogLevel?: LoggerLevel,
// Enable File-logging:
logToFile?: boolean
} = {}
): Promise<INopePackageLoader> {
let opts: {
@ -179,7 +202,8 @@ export async function runNopeBackend(
params: "not-provided",
log: "debug",
singleton: true,
dispatcherLogLevel: "info"
dispatcherLogLevel: "info",
communicationLogLevel: "info"
},
_args
);
@ -195,6 +219,11 @@ export async function runNopeBackend(
opts = {} as any;
}
if (args.logToFile) {
const fileName = generateLogfilePath("run");
useLogFile(fileName, 10);
}
if (LoggerLevels.includes(args.log)) {
setGlobalLoggerLevel(args.log);
}
@ -254,7 +283,7 @@ export async function runNopeBackend(
try {
loader = getPackageLoader(
{
communicator: getLayer(args.channel, opts.params, "info"),
communicator: getLayer(args.channel, opts.params, args.communicationLogLevel),
logger: getNopeLogger("dispatcher", args.dispatcherLogLevel),
forceEmittingUpdates:
args.forceEmittingUpdates || args.channel == "event",