Exemplo n.º 1
0
        static void Main(string[] args)
        {
            var logConfig = new LogConfiguration <DbInstallLogEntry>
            {
                FileLocateConfig = new FileLocateConfig
                {
                    Directories = new List <string>()
                    {
                        @"C:\Dev\log-examples\dbinstall"
                    },
                    FileMasks = new List <string>()
                    {
                        @"DBInstall.log(.\d*)?"
                    }
                },
                StartCheckers = new List <IEntryStartChecker>()
                {
                    new DbInstallEntryStartChecker()
                },
                EntryParsers = new List <IEntryParser <DbInstallLogEntry> >()
                {
                    new DbInstallEntryParser()
                },
                MessageParsers = new List <IEntryMessageParser <DbInstallLogEntry> > {
                    new DacPacDeployStatusParser()
                },
                Locators = new List <IEntryCollector> {
                    new DacpacSuccessLocator(), new DbInstallStartLocator()
                }
            };

            var locator = new FileLocator();

            var files = locator.Locate(logConfig.FileLocateConfig).ToArray();

            files.OrderByDescending(fi => fi.LastWriteTime).ToList().ForEach(f => Console.WriteLine(@"Name: {0}. Created: {1}", f.Name, f.LastWriteTime));
            var logFileProcesser = new LogFileProcessor();


            foreach (var fileInfo in files)
            {
                var entries = logFileProcesser.Process(fileInfo.FullName, logConfig.StartCheckers.ToArray(), logConfig.EntryParsers.ToArray()).Cast <DbInstallLogEntry>().ToArray();

                var iterator = new EntryIterator <LogEntry>();
                iterator.SetList(entries);

                foreach (var item in entries)
                {
                    iterator.SetCurrent(item);
                    logConfig.MessageParsers.ToList().ForEach(p => p.Parse(item));
                    logConfig.Locators.ToList().ForEach(c => c.Analize(item, iterator));
                }

                Console.WriteLine(@"File {0} has {1} entries. Errors {2}. Dacpack: {3}", fileInfo.Name, entries.Count(), entries.Count(e => e.IsParseError), entries.Count(e => e.IsDacpack));

                entries.Where(e => e.DacpackStatus == "SUCCESS").ToList().ForEach(e => Console.WriteLine(e.Message));
            }

            var fileWatcher = new FileSystemWatcher();

            fileWatcher.Path                = Path.GetDirectoryName(files.First().FullName);
            fileWatcher.Filter              = files.First().Name;
            fileWatcher.NotifyFilter        = NotifyFilters.LastWrite;
            fileWatcher.EnableRaisingEvents = true;
            fileWatcher.Changed            += (source, e) =>
            {
                //Console.WriteLine("{0} lines added to the file.", newLines.Count());
            };


            Console.ReadKey();
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            // read in arguments, parse them for easy consumption
            ParseCommandlineArguments(args);

            // setup log processor
            _logFileProcessor          = LogFileProcessor.Create(_type);
            _logFileProcessor.LogFiles = _logs.GetFiles(_logFilter);

            // set up logger
            Logger.DiskLog = _executionLog;

            // Print welcome message
            Logger.Info();
            Logger.Info(" ##################################################");
            Logger.Info(" # Apatche Log Files to Access Database Converter #");
            Logger.Info(" #                                                #");
            Logger.Info(" # Version 0.3                                    #");
            Logger.Info(" # By: Egil Hansen (http://egilhansen.com)        #");
            Logger.Info(" ##################################################");
            Logger.Info();
            Logger.Info("Runtime settings:");
            Logger.Info();
            Console.ForegroundColor = ConsoleColor.DarkBlue;
            Logger.Info("  Database File (db) ................... : {0}", _dbFileName.FullName);
            Logger.Info("  Overwrite Existing DB File (overwrite) : {0}", _overwrite.ToString());
            Logger.Info("  Logs Directory (logs) ................ : {0}", _logs.FullName);
            Logger.Info("  Log filter (filter) .................. : {0}", _logFilter);
            Logger.Info("  Log File Type (type) ................. : {0}", _logFileProcessor.Name);
            Logger.Info("  Runetime Log (runtimelog) ............ : {0}", _executionLog != null ? _executionLog.FullName : "n/a");
            Logger.Info();
            Console.ResetColor();

            // create target database based on log file type
            var csb = new OleDbConnectionStringBuilder {
                DataSource = _dbFileName.FullName, Provider = "Microsoft.Jet.OLEDB.4.0"
            };

            // remove existing database file
            if (_dbFileName.Exists && _overwrite)
            {
                _dbFileName.Delete();
            }

            // create database
            if (_dbFileName.Exists)
            {
                AddTable(csb);
            }
            else
            {
                CreateAccessDatabase(csb.ToString());
            }

            // parse each log file, add each log entry to database
            Logger.Info("Starting log file processing . . .");
            Logger.LogOffscreen(string.Empty);
            Logger.LogOffscreen("Start time: {0}", DateTime.Now);
            Logger.Info();

            _logFileProcessor.Process(csb.ToString());
        }