static void Main(string[] args) { TailfParameters prms = new TailfParameters(args); try { prms.Parse(); if (prms.FileNames.Count() == 0) { throw new Exception("At least one file must be specified"); } if (prms.FileNames.Count() > 1) { throw new Exception("At most one file must be specified"); } int n = 0; int.TryParse(prms.NOfLines, out n); if (n == 0) { n = DefaultLines; } if (!string.IsNullOrEmpty(prms.ColorMap)) { colorMappingDict = prms.ColorMap.Split("};,".ToArray(), StringSplitOptions.RemoveEmptyEntries) .Select(m => { var arr = m.Split("=".ToArray(), 2); return(new KeyValuePair <string, ConsoleColor>(arr[0], (ConsoleColor)Enum.Parse(typeof(ConsoleColor), arr[1]))); }) .ToDictionary(p => p.Key, p => p.Value, StringComparer.OrdinalIgnoreCase); } Tail tail = new Tail(prms.FileNames.First(), n); tail.LevelRegex = prms.LevelRegex; tail.LineFilter = prms.Filter; tail.Changed += new EventHandler <Tail.TailEventArgs>(tail_Changed); tail.Run(); Console.ReadLine(); tail.Stop(); } catch (NotEnougthParametersException) { Console.Error.WriteLine("Use:"); Console.Error.WriteLine("Tailf " + prms.GetShortHelp() + " <filename>"); Console.Error.WriteLine(prms.GetHelp()); } catch (Exception e) { Console.Error.WriteLine("Fatal error:" + e.Message); } }
static void Main(string[] args) { TailfParameters prms = new TailfParameters(args); try { prms.Parse(); if (prms.FileNames.Count() == 0) { throw new Exception("At least one file must be specified"); } if (prms.FileNames.Count() > 1) { throw new Exception("At most one file must be specified"); } int n = 0; int.TryParse(prms.NOfLines, out n); if (n == 0) n = DefaultLines; if(!string.IsNullOrEmpty(prms.ColorMap)) { colorMappingDict = prms.ColorMap.Split("};,".ToArray(), StringSplitOptions.RemoveEmptyEntries) .Select(m => { var arr = m.Split("=".ToArray(), 2); return new KeyValuePair<string, ConsoleColor>(arr[0], (ConsoleColor)Enum.Parse(typeof(ConsoleColor), arr[1])); }) .ToDictionary(p => p.Key, p => p.Value, StringComparer.OrdinalIgnoreCase); } Tail tail = new Tail(prms.FileNames.First(), n); tail.LevelRegex = prms.LevelRegex; tail.LineFilter = prms.Filter; tail.Changed += new EventHandler<Tail.TailEventArgs>(tail_Changed); tail.Run(); Console.ReadLine(); tail.Stop(); } catch (NotEnougthParametersException) { Console.Error.WriteLine("Use:"); Console.Error.WriteLine("Tailf " + prms.GetShortHelp()+" <filename>"); Console.Error.WriteLine(prms.GetHelp()); } catch (Exception e) { Console.Error.WriteLine("Fatal error:" + e.Message); } }
public Tail(TailfParameters parameters) { _filePath = parameters.FilePath; _numLines = parameters.NumLines; if (!string.IsNullOrEmpty(parameters.LineFilter)) { _lineFilterRegex = new Regex(parameters.LineFilter); } if (!string.IsNullOrEmpty(parameters.LevelRegex)) { _levelRegex = new Regex(parameters.LevelRegex, RegexOptions.Compiled | RegexOptions.Multiline); } _resetEvent = new ManualResetEvent(false); }
static void Main(string[] args) { TailfParameters prms = new TailfParameters(args); try { prms.Parse(); if (prms.FileNames.Count() == 0) { throw new Exception("At least one file must be specified"); } if (prms.FileNames.Count() > 1) { throw new Exception("At most one file must be specified"); } int n = 0; int.TryParse(prms.NOfLines, out n); if (n == 0) { n = DefaultLines; } Tail tail = new Tail(prms.FileNames.First(), n); tail.LineFilter = prms.Filter; tail.Changed += new EventHandler <Tail.TailEventArgs>(tail_Changed); tail.Run(); Console.ReadLine(); tail.Stop(); } catch (NotEnougthParametersException) { Console.Error.WriteLine("Use:"); Console.Error.WriteLine("Tailf " + prms.GetShortHelp() + " <filename>"); Console.Error.WriteLine(prms.GetHelp()); } catch (Exception e) { Console.Error.WriteLine("Fatal error:" + e.Message); } }