상속: CommandLineParser
예제 #1
0
파일: Program.cs 프로젝트: tommihei/Tailf
        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);
            }
        }
예제 #2
0
파일: Program.cs 프로젝트: kerryjiang/Tailf
        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);
            }
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
            }
        }