/// <summary> /// Copies all log files to the local disk in the temporary folder. /// </summary> /// <param name="container"></param> public void CopyToLocalDisk(ServerLogFileContainer container) { if (!container.AppLogFiles.Any()) return; string tempRoot = Path.Combine(Path.GetTempPath(), "Kelpie", container.Server.Name); if (!Directory.Exists(tempRoot)) Directory.CreateDirectory(tempRoot); foreach (AppLogFiles appLogFile in container.AppLogFiles) { string destAppDirectory = Path.Combine(tempRoot, appLogFile.Appname); if (!Directory.Exists(destAppDirectory)) Directory.CreateDirectory(destAppDirectory); Parallel.ForEach(appLogFile.LogfilePaths, (filePath) => { if (File.GetLastWriteTime(filePath) >= DateTime.UtcNow.AddDays(-_configuration.MaxAgeDays)) { // Copy the log file to the %TEMP%/{appName}/ directory string sourceDir = Path.GetDirectoryName(filePath); LogLine("- Copying {0} to local disk", filePath); string destFilePath = filePath.Replace(sourceDir, destAppDirectory); File.Copy(filePath, destFilePath, true); appLogFile.UpdatePath(filePath, destFilePath); } else { LogLine("- Ignoring {0} as it's more than {1} days old", filePath, _configuration.MaxAgeDays); } }); } }
private ServerLogFileContainer CreateContainer(string logPath) { var server = new Server() { CopyFilesToLocal = true, Name = "server", Username = "******", Password = "******", Path = "" }; var environment = new Environment() { Name = "environment" }; environment.Servers.Add(server); var appLogFiles = new List<AppLogFiles>(); appLogFiles.Add(new AppLogFiles() { LogfilePaths = { logPath }, Appname = APP_NAME }); var container = new ServerLogFileContainer(); container.Environment = environment; container.Server = server; container.AppLogFiles = appLogFiles; return container; }
/// <summary> /// Scans every environment and each server in that environment. /// </summary> public IEnumerable<ServerLogFileContainer> ScanAllEnvironments() { var list = new List<ServerLogFileContainer>(); foreach (Environment environment in _configuration.Environments) { foreach (Server server in environment.Servers) { IEnumerable<AppLogFiles> apps = GetLogfilePaths(server); var container = new ServerLogFileContainer() { Server = server, Environment = environment, AppLogFiles = apps }; list.Add(container); } } return list; }
/// <summary> /// Scans a single server's log files. /// </summary> /// <param name="serverName">The name of the server, which should match the kelpie.config file.</param> public ServerLogFileContainer ScanSingleServer(string serverName) { foreach (Environment environment in _configuration.Environments) { var server = environment.Servers.FirstOrDefault(x => x.Name.Equals(serverName, StringComparison.InvariantCultureIgnoreCase)); if (server != null) { IEnumerable<AppLogFiles> apps = GetLogfilePaths(server); var container = new ServerLogFileContainer() { Server = server, Environment = environment, AppLogFiles = apps }; return container; } } return null; }
/// <summary> /// Scans all servers for a given environment. /// </summary> /// <param name="environmentName">The name of the environment, which should match the kelpie.config file.</param> public IEnumerable<ServerLogFileContainer> ScanSingleEnvironment(string environmentName) { var list = new List<ServerLogFileContainer>(); Environment environment = _configuration.Environments.FirstOrDefault( x => x.Name.Equals(environmentName, StringComparison.InvariantCultureIgnoreCase)); if (environment != null) { foreach (Server server in environment.Servers) { IEnumerable<AppLogFiles> apps = GetLogfilePaths(server); var container = new ServerLogFileContainer() { Server = server, Environment = environment, AppLogFiles = apps }; list.Add(container); } } return list; }