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()); }
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"); }