Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 7c85bf353bc01f5d6938609aa4c2678b4f9f4c96
  • develop par défaut protégée
  • implement-discord-markdown-update
  • matrix-attachments-order-fix
  • fix-oversized-file-transfer
  • matrix-attachment-order-fix
  • matrix-answer-modified-fix
  • cherry-pick-moise
8 résultats

log.ts

Blame
  • 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;
            });