예제 #1
0
        private static IAppender[] ReadAllAppenders(IReader reader, LayoutFactory layoutFactory, AppenderFactory appenderFactory)
        {
            int N = int.Parse(reader.ReadLine());

            IAppender[] appenders = new IAppender[N];

            for (int i = 0; i < N; i++)
            {
                // "<appender type> <layout type> <REPORT LEVEL>"
                string[] appenderArgs = reader.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries);
                string   type         = appenderArgs[0];
                string   layoutType   = appenderArgs[1];


                ILayout   layout   = layoutFactory.GetLayout(layoutType);
                IAppender appender = null;
                if (appenderArgs.Length == 3)
                {
                    string reportLevel = appenderArgs[2];
                    appender = appenderFactory.GetAppender(type, layout, reportLevel);
                }
                else
                {
                    appender = appenderFactory.GetAppender(type, layout);
                }

                appenders[i] = appender;
            }

            return(appenders);
        }
예제 #2
0
        private static void ParseAppendersInput(int appendersCount, AppenderFactory appenderFactory, ICollection <IAppender> appenders)
        {
            for (int counter = 0; counter < appendersCount; counter++)
            {
                var appendersArgs = Console.ReadLine()
                                    .Split(' ');

                var type   = appendersArgs[0];
                var layout = appendersArgs[1];
                var level  = "INFO";

                if (appendersArgs.Length == 3)
                {
                    level = appendersArgs[2];
                }

                IAppender currentAppender;

                try
                {
                    currentAppender = appenderFactory.GetAppender(type, layout, level);
                    appenders.Add(currentAppender);
                }
                catch (ArgumentException ae)
                {
                    Console.WriteLine(ae.Message);
                }
            }
        }
예제 #3
0
        private static void ReadAppendersData(int appendersCount, ICollection <IAppender> appenders, AppenderFactory appenderFactory)
        {
            for (int i = 0; i < appendersCount; i++)
            {
                string[] appendersInfo = Console.ReadLine()
                                         .Split()
                                         .ToArray();

                string appenderType = appendersInfo[0];
                string layoutType   = appendersInfo[1];
                string levelStr     = "INFO";

                if (appendersInfo.Length == 3)
                {
                    levelStr = appendersInfo[2];
                }

                try
                {
                    IAppender appender = appenderFactory.GetAppender(appenderType, layoutType, levelStr);
                    appenders.Add(appender);
                }
                catch (Exception e)
                {
                    //Output needed?
                    Console.WriteLine(e.Message);
                    continue;
                }
            }
        }
예제 #4
0
        private static void ReadAppendersData(int appendersCount, ICollection <IAppender> appenders, AppenderFactory appenderFactory)
        {
            for (int i = 0; i < appendersCount; i++)
            {
                string[] appendersInfo = Console.ReadLine()
                                         .Split();

                string appenderType = appendersInfo[0];
                string layoutType   = appendersInfo[1];
                string levelString  = "INFO";

                if (appendersInfo.Length == 3)
                {
                    levelString = appendersInfo[2];
                }

                try
                {
                    IAppender appender = appenderFactory.GetAppender(appenderType, layoutType, levelString);

                    appenders.Add(appender);
                }
                catch (Exception)
                {
                }
            }
        }
예제 #5
0
        private static ILogger InitializeLogger()
        {
            var appenders       = new List <IAppender>();
            var appendersCount  = int.Parse(Console.ReadLine());
            var layoutFactory   = new LayoutFactory();
            var appenderFactory = new AppenderFactory(layoutFactory);

            for (int i = 0; i < appendersCount; i++)
            {
                var inputTokens = Console.ReadLine()
                                  .Split(' ', StringSplitOptions.RemoveEmptyEntries);

                var appenderType = inputTokens[0];
                var layoutType   = inputTokens[1];
                var errorLevel   = ErrorLevel.INFO;

                if (inputTokens.Length == 3)
                {
                    errorLevel = (ErrorLevel)Enum.Parse(typeof(ErrorLevel), inputTokens[2]);
                }

                var appender = appenderFactory.GetAppender(appenderType, errorLevel, layoutType);
                appenders.Add(appender);
            }

            var logger = new Logger(appenders);

            return(logger);
        }
예제 #6
0
        private static void ReadAppendersData(int numberOfApenders,
                                              ICollection <IAppender> appenders,
                                              AppenderFactory appenderFactory)
        {
            for (int i = 0; i < numberOfApenders; i++)
            {
                string[] appendersInfo = Console.ReadLine()
                                         .Split(" ");

                string appendersType = appendersInfo[0];
                string layoutType    = appendersInfo[1];
                string levelStr      = "INFO";
                if (appendersInfo.Length == 3)
                {
                    levelStr = appendersInfo[2];
                }


                try
                {
                    IAppender appender = appenderFactory.GetAppender
                                             (appendersType, layoutType, levelStr);
                    appenders.Add(appender);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    continue;
                }
            }
        }
예제 #7
0
        public void AddAppender(string appenderInfo)
        {
            var data = appenderInfo.Split(" ");

            var appenderType = data[0];
            var layoutType   = data[1];

            var layout = layoutFactory.GetLayout(layoutType);

            //Since the input doesn't provide information for the console or the file, the default for this project will be used
            //which will break the Liskov principle, but this should be rather here than in the Appender classes.
            IAppender appender = null;

            if (appenderType == "ConsoleAppender")
            {
                var writableObject = writableObjectsFactory.GetWritableObject("Console");
                appender = appenderFactory.GetAppender(appenderType, layout, writableObject);
            }

            else if (appenderType == "FileAppender")
            {
                var writableObject = writableObjectsFactory.GetWritableObject("LogFile");
                appender = appenderFactory.GetAppender(appenderType, layout, writableObject);
            }

            if (data.Length > 2 && Enum.TryParse(data[2], true, out ReportLevels reportLevelLimit))
            {
                appender.ReportLevel = reportLevelLimit;
            }

            if (logger is null)
            {
                logger = new Loggers.Logger(appender);
            }

            else
            {
                logger.AddAppenders(appender);
            }
        }