static void Main(string[] args) { var simpleLayout = new SimpleLayout(); var consoleAppender = new ConsoleAppender(simpleLayout); consoleAppender.Threshold = ReportLevel.Error; var fileAppender = new FileAppender(simpleLayout); fileAppender.File = "log.txt"; var logger = new Logger.Loggers.Logger(consoleAppender, fileAppender); logger.Info("Everything seems fine"); logger.Warn("Warning: ping is too high - disconnect imminent"); logger.Error("Error parsing request"); logger.Critical("No connection string found in App.config"); logger.Fatal("mscorlib.dll does not respond"); }
public void Act(int countOfAppenders) { IAppender[] appenders = new IAppender[countOfAppenders]; for (int i = 0; i < countOfAppenders; i++) { var input = Console.ReadLine().Split(); ILayout layout = null; switch (input[1]) { case nameof(SimpleLayout): layout = new SimpleLayout(); break; case nameof(XmlLayout): layout = new XmlLayout(); break; default: throw new ArgumentException(); } IAppender appender = null; switch (input[0]) { case nameof(ConsoleAppender): appender = new ConsoleAppender(layout); break; case nameof(FileAppender): appender = new FileAppender(layout); ((FileAppender)appender).File = new LogFile(); break; } if (input.Length == 3) { ReportLevel level = (ReportLevel)Enum.Parse(typeof(ReportLevel), input[2]); appender.ReportLevel = level; } appenders[i] = appender; } var logger = new Logger.Loggers.Logger(appenders); string command; while ((command = Console.ReadLine()) != "END") { var input = command.Split('|'); string time = input[1]; string message = input[2]; ReportLevel level = (ReportLevel)Enum.Parse(typeof(ReportLevel), input[0]); switch (level) { case ReportLevel.CRITICAL: logger.Critical(time, message); break; case ReportLevel.ERROR: logger.Error(time, message); break; case ReportLevel.FATAL: logger.Fatal(time, message); break; case ReportLevel.INFO: logger.Info(time, message); break; case ReportLevel.WARNING: logger.Warn(time, message); break; } } Console.WriteLine(logger); }