示例#1
0
        public override LogRotateOptionsBuilder[] CreateBuilders()
        {
            var directory = this.directory;

            if (string.IsNullOrEmpty(directory))
            {
                return(new LogRotateOptionsBuilder[0]);
            }

            if (!Directory.Exists(directory))
            {
                directory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, directory);
                if (!Directory.Exists(directory))
                {
                    return(new LogRotateOptionsBuilder[0]);
                }
            }

            var builders = new List <LogRotateOptionsBuilder>();

            foreach (var file in Directory.GetFiles(directory))
            {
                var fileProvider = new FileLogRotateOptionsBuilderProvider(file);
                builders.AddRange(fileProvider.CreateBuilders());
            }

            return(builders.ToArray());
        }
示例#2
0
        public void Execute(string[] args)
        {
            DateTime mockTime;
            string   mockFile;

            if (args.Length <= 1)
            {
                mockTime = DateTime.Now;
                mockFile = LogRotaterDaemon.GlobalOptionsFile;
            }
            else
            {
                if (!DateTime.TryParse(args[1], out mockTime))
                {
                    throw new InvalidOperationException("invalid mock time " + args[1]);
                }

                if (args.Length > 2)
                {
                    mockFile = args[2];
                }
                else
                {
                    mockFile = LogRotaterDaemon.GlobalOptionsFile;
                }
            }

            Console.WriteLine("executing mock: ");
            Console.WriteLine("  file: " + mockFile);
            Console.WriteLine("  time: " + mockTime.ToString("yyyy-MM-dd HH:mm:ss"));
            Console.Write(" load mock rotater configuration,");
            var provider = new FileLogRotateOptionsBuilderProvider(mockFile);
            var builders = provider.CreateBuilders();

            Console.WriteLine(" found " + builders.Length + " rotater" + (builders.Length > 1 ? "s" : ""));

            foreach (var builder in builders)
            {
                var options = builder.Build();
                Console.WriteLine(" -------------------- mock --------------------");
                options.Store(Console.Out);
                var rotater = LogRotater.Create(options);
                Console.WriteLine(" > rotating: ");
                rotater.Rotate(mockTime);
                Console.WriteLine(" < completed");
                Console.WriteLine(" ----------------------------------------------");
            }

            Console.WriteLine("mock completed");
        }