Sélectionner une révision Git
Bifurcation depuis
ARISE / matrix-appservice-discord
Le projet source a une visibilité limitée.
log.ts 3,66 Kio
import { createLogger, Logger, format, transports } from "winston";
import { DiscordBridgeConfigLogging, LoggingFile} from "./config";
import { inspect } from "util";
import * as moment from "moment";
import "winston-daily-rotate-file";
const FORMAT_FUNC = format.printf((info) => {
return `${info.timestamp} [${info.module}] ${info.level}: ${info.message}`;
});
export class Log {
public static get level() {
return this.logger.level;
}
public static set level(level) {
this.logger.level = level;
}
public static Configure(config: DiscordBridgeConfigLogging) {
// Merge defaults.
Log.config = Object.assign(new DiscordBridgeConfigLogging(), config);
Log.setupLogger();
}
public static ForceSilent() {
new Log("Log").warn("Log set to silent");
Log.logger.silent = true;
}
private static config: DiscordBridgeConfigLogging;
private static logger: Logger = null;
private static now() {
return moment().format(Log.config.lineDateFormat);
}
private static setupLogger() {
if (Log.logger) {
Log.logger.close();
}
const tsports: transports.StreamTransportInstance[] = Log.config.files.map((file) =>
Log.setupFileTransport(file),
);
tsports.push(new transports.Console({
level: Log.config.console,
}));
Log.logger = createLogger({
format: format.combine(
format.timestamp({
format: Log.now,
}),
format.colorize(),
FORMAT_FUNC,
),
transports: tsports,
});
}
private static setupFileTransport(config: LoggingFile): transports.FileTransportInstance {
config = Object.assign(new LoggingFile(), config);
const filterOutMods = format((info, _) => {
if (config.disabled.includes(info.module) &&
config.enabled.length > 0 &&
!config.enabled.includes(info.module)
) {
return false;
}
return info;
});