Esempio n. 1
0
        public static string GetAppenderTarget()
        {
            IAppender appender = GetFirstAppender();

            if (appender.GetType() == typeof(RollingFileAppender))
            {
                return(((RollingFileAppender)appender).File);
            }

            return("?");
        }
        static void Main(string[] args)
        {
            AppenderFactory appenderFactory = new AppenderFactory();
            LayoutFactory   layoutFactory   = new LayoutFactory();

            int appenderscount = int.Parse(Console.ReadLine());
            var appenders      = new List <IAppender>();

            for (int i = 0; i < appenderscount; i++)
            {
                var    appenderInput = Console.ReadLine().Split(' ').ToArray();
                string appenderType  = appenderInput[0];
                string layoutType    = appenderInput[1];
                try
                {
                    string    reportLevel = appenderInput[2].ToLower();
                    int       threshold   = DicThreshold.CheckThreshold(reportLevel);
                    ILayout   layout      = layoutFactory.CreateLayout(layoutType);
                    IAppender appender    = appenderFactory.CreateAppender(appenderType, layout, reportLevel);
                    appenders.Add(appender);
                }
                catch (Exception e)
                {
                    ILayout   layout   = layoutFactory.CreateLayout(layoutType);
                    IAppender appender = appenderFactory.CreateAppender(appenderType, layout, "info");
                    appenders.Add(appender);
                }
            }

            while (true)
            {
                var command = Console.ReadLine().Split('|').ToArray();
                if (command[0] == "END")
                {
                    break;
                }

                string reportLevel = command[0].ToLower();
                string date        = command[1];
                string message     = command[2];

                Logger logger = new Logger(appenders.ToArray());

                switch (reportLevel)
                {
                case "info":
                    logger.Info(date, message);
                    break;

                case "warning":
                    logger.Warning(date, message);
                    break;

                case "error":
                    logger.Error(date, message);
                    break;

                case "critical":
                    logger.Critical(date, message);
                    break;

                case "fatal":
                    logger.Fatal(date, message);
                    break;
                }
            }

            Console.WriteLine("Logger info");
            foreach (var appender in appenders)
            {
                var sb = new StringBuilder();

                Console.Write($"Appender type: {appender.GetType().Name}, Layout type: {appender.Layout.GetType().Name}, Report level: {appender.Layout.ReportLevel}, Messages appended: {appender.SentMessages}");
                if (appender is FileAppender)
                {
                    Console.WriteLine($", File size: {appender.LogFile.Size()}");
                }
                Console.WriteLine();
            }
        }
Esempio n. 3
0
        public void RemoveAppender(IAppender appender)
        {
            var existingAppender = this.appenders.FirstOrDefault(a => a.GetType().Name == appender.GetType().Name);

            if (existingAppender != null)
            {
                throw new InvalidOperationException(
                          string.Format("No appender of type {0} is currently in useby the logger.", appender.GetType().Name));
            }

            this.appenders.Remove(existingAppender);
        }
Esempio n. 4
0
        public void AddAppender(IAppender appenderType)
        {
            var existingAppender = this.appenders.FirstOrDefault(a => a.GetType().Name == appenderType.GetType().Name);

            if (existingAppender != null)
            {
                throw new InvalidOperationException(
                          string.Format("The type of appender {0} is already being used by the logger.", appenderType.GetType().Name));
            }

            this.appenders.Add(appenderType);
        }