示例#1
0
        private void GetAppenders()
        {
            var numberOFAppeders = int.Parse(Console.ReadLine());

            for (int i = 0; i < numberOFAppeders; i++)
            {
                string[] inputArgs = Console.ReadLine().Split(" ");

                AppendersType appenderType = Enum.Parse <AppendersType>(inputArgs[0]);
                LayoutsType   layoutType   = Enum.Parse <LayoutsType>(inputArgs[1]);

                ILayout   layout   = layoutFactory.CreateLayout(layoutType);
                IAppender appender = appenderFactory.CreateAppender(appenderType, layout);

                if (inputArgs.Length == 3)
                {
                    string      reportLevelType = inputArgs[2];
                    ReportLevel level           = Enum.Parse <ReportLevel>(reportLevelType);

                    appender.ReportLevel = level;
                }

                if (appenderType == AppendersType.FileAppender)
                {
                    ((FileAppender)appender).File = new LogFile();
                }

                appenders.Add(appender);
            }
        }
示例#2
0
        private static ILogger SetUpLogger(int appendersCount, IReader reader, IWriter writer, IFile file
                                           , LayoutFactory layoutFactory, AppenderFactory appenderFactory)
        {
            ICollection <IAppender> appenders = new HashSet <IAppender>();

            for (int i = 0; i < appendersCount; i++)
            {
                string[] appArg       = reader.ReadLine().Split(" ", StringSplitOptions.RemoveEmptyEntries);
                string   appenderType = appArg[0];
                string   layoutType   = appArg[1];

                bool  hasError = false;
                Level level    = ParseLevel(appArg, writer, ref hasError);

                if (hasError)
                {
                    continue;
                }

                try
                {
                    ILayout   layout   = layoutFactory.CreateLayout(layoutType);
                    IAppender appender = appenderFactory.CreaterAppender(appenderType, layout, level, file);
                    appenders.Add(appender);
                }
                catch (InvalidOperationException ex)
                {
                    writer.WriteLine(ex.Message);
                }
            }

            ILogger logger = new Logger(appenders);

            return(logger);
        }
示例#3
0
        private void _001ViewerControlAdapterTest()
        {
            var viewModel = _userControlViewModel as ViewerControlAdapterViewModel;

            viewModel.Layout = LayoutFactory.CreateLayout(3, 3);
            MessageBox.Show("Hello F5");
        }
示例#4
0
    public IAppender CreateAppender(string[] arguments)
    {
        string appenderType = arguments[0];
        string layoutType   = arguments[1];

        ILayout layout = layoutFactory.CreateLayout(layoutType);

        if (appenderType == "ConsoleAppender")
        {
            if (arguments.Length == 3)
            {
                return(new ConsoleAppender(layout, Enum.Parse <ErrorTreshholds>(arguments[2])));
            }
            else
            {
                return(new ConsoleAppender(layout));
            }
        }
        else if (appenderType == "FileAppender")
        {
            if (arguments.Length == 3)
            {
                return(new FileAppender(layout, Enum.Parse <ErrorTreshholds>(arguments[2]), new LogFile()));
            }
            else
            {
                return(new FileAppender(layout, new LogFile()));
            }
        }

        return(null);
    }
        public static Logger CreateLogger(int appenderNum)
        {
            for (int i = 0; i < appenderNum; i++)
            {
                //TODO: Have this read from the CommandInterpreter rather than the Console
                string[]    appenderInfo = Console.ReadLine().Split();
                string      appenderType = appenderInfo[0];
                string      layoutType   = appenderInfo[1];
                ReportLevel reportLevel  = 0;
                if (appenderInfo.Length == 3)
                {
                    reportLevel = (ReportLevel)ReportLevel.Parse(typeof(ReportLevel), appenderInfo[2]);
                }

                //Creates the layout
                ILayout layout = LayoutFactory.CreateLayout(layoutType);

                //Creates the appender with the corresponding layout
                IAppender appender = AppenderFactory.CreateAppender(appenderType, layout, reportLevel);

                appenders.Add(appender);
            }

            //Returns the logger, with all the appenders from the list
            var logger = new Logger(appenders.ToArray());

            return(logger);
        }
示例#6
0
    public IAppender CreateAppender(string[] appenderParams, LayoutFactory layoutFactory)
    {
        string type       = appenderParams[0];
        string layoutType = appenderParams[1];

        ILayout layout = layoutFactory.CreateLayout(layoutType);

        Type appenderType = Assembly.GetExecutingAssembly()
                            .GetTypes()
                            .FirstOrDefault(t => t.IsClass &&
                                            t.Name.EndsWith(AppenderSuffix) &&
                                            t.Name == type);

        if (layoutType == null)
        {
            throw new ArgumentNullException(
                      nameof(appenderType),
                      UnknownAppenderExceptionMessage);
        }

        IAppender appender = Activator.CreateInstance(appenderType, layout) as IAppender;

        if (appenderParams.Length == 3)
        {
            ReportLevel reportLevel = Enum.Parse <ReportLevel>(appenderParams[2], true);

            appender.ReportLevel = reportLevel;
        }

        return(appender);
    }
示例#7
0
        private static BoardCell CreatePageModel()
        {
            var page = PageModelFactory.CreatePageModel(LayoutFactory.CreateLayout(3, 3));

            return(new BoardCell {
                PageModel = page
            });
        }
示例#8
0
        public override void AppendPage()
        {
            Add(PageModelFactory.CreatePageModel(LayoutFactory.CreateLayout(3, 3)));

            var lastPageNO = Count - 1;

            PageChange(lastPageNO);
            FocusChange(lastPageNO);
        }
示例#9
0
        private void _002PageControlTest()
        {
            var viewModel = _userControlViewModel as PageControlViewModel;

            viewModel.Layout = LayoutFactory.CreateLayout(3, 3);
            var cells = CreateCells();

            viewModel.ImageCells = cells;

            viewModel.TitleBarVisibility = Visibility.Visible;
            viewModel.TitleBarPosition   = Dock.Bottom;

            viewModel.PageNO = 1;
        }
        private void CreateAppender(string[] inputInfo)
        {
            string      appenderType = inputInfo[1];
            string      layoutType   = inputInfo[2];
            ReportLevel reportLevel  = ReportLevel.Info;

            if (inputInfo.Length > 2)
            {
                //reportLevel = Enum.Parse<ReportLevel>(inputInfo[3], true);
            }
            ILayout   layout   = LayoutFactory.CreateLayout(layoutType);
            IAppender appender = AppenderFactory.CreateAppender(appenderType, layout, reportLevel);

            appenders.Add(appender);
        }
        public void AddAppender(string[] args)
        {
            string appenderType = args[0];
            string layoutType   = args[1];

            ReportLevel reportLevel = ReportLevel.INFO;

            if (args.Length == 3)
            {
                reportLevel = Enum.Parse <ReportLevel>(args[2], true);
            }

            ILayout   layout   = layoutFactory.CreateLayout(layoutType);
            IAppender appender = appenderFactory.CreateAppender(appenderType, layout);

            appender.ReportLevel = reportLevel;

            appenders.Add(appender);
        }
示例#12
0
        public IAppender ReadAppender()
        {
            var appenderParts = Console.ReadLine().Split(" ");
            var type          = appenderParts[0];

            var layoutFactory = new LayoutFactory();
            var layout        = layoutFactory.CreateLayout(appenderParts[1]);

            var treshold = ReportLevel.INFO;

            if (appenderParts.Length == 3)
            {
                treshold = (ReportLevel)Enum.Parse(typeof(ReportLevel), appenderParts[2]);
            }

            var appenderFactory = new AppenderFactory();

            return(appenderFactory.CreateAppender(type, layout, treshold));
        }
    public IAppender CreateAppender(string appenderType, string levelString, string layoutType)
    {
        ILayout    layout     = layoutFactory.CreateLayout(layoutType);
        ErrorLevel errorLevel = ParseErrorLevel(levelString);
        IAppender  appender   = null;

        switch (appenderType)
        {
        case "ConsoleAppender":
            appender = new ConsoleAppender(layout, errorLevel);
            break;

        case "FileAppender":
            ILogFile logFile = new LogFile(string.Format(DefaultFileName));
            appender = new FileAppender(layout, errorLevel, logFile);
            break;

        default:
            throw new ArgumentException("Invalid Appender Type!");
        }
        return(appender);
    }
示例#14
0
        public static bool SetLayoutFromElement(object o, XmlElement el, NameValueCollection variables)
        {
            string name = el.LocalName;

            if (!IsLayoutProperty(o.GetType(), name))
            {
                return(false);
            }

            PropertyInfo targetPropertyInfo = o.GetType().GetProperty(name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy | BindingFlags.IgnoreCase);

            if (targetPropertyInfo != null && typeof(ILayout).IsAssignableFrom(targetPropertyInfo.PropertyType))
            {
                ILayout layout = LayoutFactory.CreateLayout(GetCaseInsensitiveAttribute(el, "type", variables));
                ConfigureObjectFromAttributes(layout, el.Attributes, variables, true);
                ConfigureObjectFromElement(layout, el, variables);
                targetPropertyInfo.SetValue(o, layout, null);
                return(true);
            }

            if (name == "layout" && (o is TargetWithLayout))
            {
                if (HasCaseInsensitiveAttribute(el, "type"))
                {
                    ILayout layout = LayoutFactory.CreateLayout(GetCaseInsensitiveAttribute(el, "type", variables));
                    ConfigureObjectFromAttributes(layout, el.Attributes, variables, true);
                    ConfigureObjectFromElement(layout, el, variables);
                    ((TargetWithLayout)o).CompiledLayout = layout;
                }
                else
                {
                    ((TargetWithLayout)o).Layout = el.InnerText;
                }
                return(true);
            }

            return(false);
        }
示例#15
0
        private void ReadAppendersInfo()
        {
            int appendersCount = int.Parse(ConsoleReader.ReadLine());

            this.appenders = new IAppender[appendersCount];

            for (int i = 0; i < appendersCount; i++)
            {
                string[] appenderInfo = ConsoleReader.ReadLine().Split();
                string   appenderType = appenderInfo[0];
                string   layoutType   = appenderInfo[1];

                ILayout   layout   = LayoutFactory.CreateLayout(layoutType);
                IAppender appender = AppenderFactory.CreateAppender(appenderType, layout);

                if (appenderInfo.Length > 2)
                {
                    string reportLevel = this.ConvertStringToTitleCase(appenderInfo[2]);
                    appender.ReportLevel = (ReportLevel)Enum.Parse(typeof(ReportLevel), reportLevel);
                }

                this.appenders[i] = appender;
            }
        }
示例#16
0
        public void Run()
        {
            var appenders = new List <IAppender>();

            int count = int.Parse(Console.ReadLine());

            for (int i = 0; i < count; i++)
            {
                var         inputInfo    = Console.ReadLine().Split();
                var         appenderType = inputInfo[0];
                var         layoutType   = inputInfo[1];
                ReportLevel reportLevel  = ReportLevel.Info;

                if (inputInfo.Length > 2)
                {
                    reportLevel = Enum.Parse <ReportLevel>(inputInfo[2], true);
                }

                ILayout   layout   = LayoutFactory.CreateLayout(layoutType);
                IAppender appender = AppenderFactory.CreateAppender(appenderType, layout, reportLevel);
                appenders.Add(appender);
            }

            var input = Console.ReadLine();

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

            while (input != "END")
            {
                var inputInfo        = input.Split("|");
                var loggerMethodType = inputInfo[0];
                var date             = inputInfo[1];
                var messege          = inputInfo[2];

                if (loggerMethodType == "INFO")
                {
                    logger.Info(date, messege);
                }
                else if (loggerMethodType == "WARNING")
                {
                    logger.Warning(date, messege);
                }
                else if (loggerMethodType == "ERROR")
                {
                    logger.Error(date, messege);
                }
                else if (loggerMethodType == "CRITICAL")
                {
                    logger.Critical(date, messege);
                }
                else if (loggerMethodType == "FATAL")
                {
                    logger.Fatal(date, messege);
                }
                input = Console.ReadLine();
            }

            Console.WriteLine("Logger info");

            foreach (var item in appenders)
            {
                Console.WriteLine(item);
            }
        }
        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();
            }
        }
示例#18
0
        public void Run()
        {
            int counter = int.Parse(Console.ReadLine());

            for (int i = 0; i < counter; i++)
            {
                string[] inputInfo = Console.ReadLine()
                                     .Split(" ", StringSplitOptions.RemoveEmptyEntries);

                string      appenderType = inputInfo[0];
                string      layoutType   = inputInfo[1];
                ReportLevel reportLevel  = ReportLevel.Info;

                if (inputInfo.Length > 2)
                {
                    reportLevel = Enum.Parse <ReportLevel>(inputInfo[2], true);
                }

                ILayout  layout   = LayoutFactory.CreateLayout(layoutType);
                Appender appender = AppenderFactory.CreateAppender(appenderType, layout, reportLevel);
                appenders.Add(appender);
            }

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

            while (true)
            {
                string input = Console.ReadLine();

                if (input == "END")
                {
                    break;
                }

                string[] inputInfo = input
                                     .Split("|");

                string loggerMethodType = inputInfo[0];
                string date             = inputInfo[1];
                string message          = inputInfo[2];

                if (loggerMethodType == "INFO")
                {
                    logger.Info(date, message);
                }
                else if (loggerMethodType == "WARNING")
                {
                    logger.Warning(date, message);
                }
                else if (loggerMethodType == "ERROR")
                {
                    logger.Error(date, message);
                }
                else if (loggerMethodType == "CRITICAL")
                {
                    logger.Critical(date, message);
                }
                else if (loggerMethodType == "FATAL")
                {
                    logger.Fatal(date, message);
                }
            }

            Console.WriteLine("Logger info");

            foreach (var appender in appenders)
            {
                Console.WriteLine(appender);
            }
        }