예제 #1
0
        public override HealthMonitorResult DoHealthCheck(IEnumerable <BoundsLimit> healthCheckParameters)
        {
            try
            {
                BoundsLimit boundsLimit = healthCheckParameters.FirstOrDefault(x => x.Name.ToLower().Equals(ServiceTimeoutMillisecondsParameter.ToLower()));
                if (boundsLimit != null)
                {
                    int serviceTimeoutMilliseconds = int.Parse(boundsLimit.Value);
                    ServiceTimeout = TimeSpan.FromMilliseconds(serviceTimeoutMilliseconds);
                }
                BoundsLimit[] checkParameters         = healthCheckParameters as BoundsLimit[] ?? healthCheckParameters.ToArray();
                string        rollingFileAppenderName = checkParameters.FirstOrDefault(x => x.Type.Equals("appender-ref")).Value;
                var           rollingFileName         = checkParameters.FirstOrDefault(x => x.Type.Equals("file")).Value;


                //Read the configuration
                Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
                CleanupLogs(hierarchy, rollingFileAppenderName, rollingFileName);
            }
            catch (Exception e)
            {
                Result.Status = ResultStatus.Error;
                Result.MessageBuilder.Append(e.ToLogString()).Append(Environment.NewLine);
            }
            return(Result);
        }
 public override HealthMonitorResult DoHealthCheck(IEnumerable <BoundsLimit> healthCheckParameters)
 {
     try
     {
         BoundsLimit boundsLimit = healthCheckParameters.FirstOrDefault(x => x.Name.ToLower().Equals(ServiceTimeoutMillisecondsParameter.ToLower()));
         if (boundsLimit != null)
         {
             int serviceTimeoutMilliseconds = int.Parse(boundsLimit.Value);
             ServiceTimeout = TimeSpan.FromMilliseconds(serviceTimeoutMilliseconds);
         }
         BoundsLimit[]       checkParameters   = healthCheckParameters as BoundsLimit[] ?? healthCheckParameters.ToArray();
         ServiceController[] servicesToRestart = checkParameters.Where(x => x.Type.Equals("service"))
                                                 .Select(y => new ServiceController(y.Value))
                                                 .ToArray();
         return(RestartServices(servicesToRestart));
     }
     catch (Exception e)
     {
         return(new HealthMonitorResult(Name, HealthType, ResultStatus.Error, e.ToLogString()));
     }
 }
        /// <summary>
        /// Iterate through all prescribed directories and look to optimeze by either deleting or
        /// archiveing/zipping files
        /// </summary>
        /// <param name="healthCheckParameters">parameters that include size of file before archiving and directories to work on</param>
        /// <returns> object</returns>
        public override HealthMonitorResult DoHealthCheck(IEnumerable <BoundsLimit> healthCheckParameters)
        {
            const string maxDays = "maxDays";
            const string maxSize = "maxSize";

            HealthMonitorResult result = new HealthMonitorResult(Name, HealthType, ResultStatus.Information);

            string[]      spaceOptimizeCheckParams = new[] { maxDays, maxSize };
            BoundsLimit[] checkParameters          = healthCheckParameters as BoundsLimit[] ?? healthCheckParameters.ToArray();
            EnsureAllParametersArePresent(spaceOptimizeCheckParams, checkParameters);
            int  daysOld  = int.Parse(checkParameters.Single(x => x.Name.Equals(maxDays)).Value);
            long fileSize = long.Parse(checkParameters.Single(x => x.Name.Equals(maxSize)).Value);

            spaceOptimizationService.MaxDays = daysOld;
            spaceOptimizationService.MaxSize = fileSize;
            BoundsLimit boundsLimit = checkParameters.FirstOrDefault(x => x.Name.ToLower().Equals(ServiceTimeoutMillisecondsParameter.ToLower()));

            if (boundsLimit != null)
            {
                int serviceTimeoutMilliseconds = int.Parse(boundsLimit.Value);
                ServiceTimeout = TimeSpan.FromMilliseconds(serviceTimeoutMilliseconds);
            }
            //the list of folder(s) to work on are of type 'folder'
            List <string> directories = checkParameters.Where(x => x.Type.Equals("folder"))
                                        .Select(y => y.Value)
                                        .ToList();

            ServiceController[] services = checkParameters.Where(x => x.Type.Equals("service"))
                                           .Select(y => new ServiceController(y.Value))
                                           .ToArray();
            HealthMonitorResult resultToStop = StopServices(services);

            result.MessageBuilder.AppendNewLine(resultToStop.MessageBuilder.ToString());
            List <SpaceOptimizationSummary> optimizations = new List <SpaceOptimizationSummary>();

            //iterete through directories
            foreach (string path in directories)
            {
                try
                {
                    DirectoryInfo directory = new DirectoryInfo(path);
                    archiveService.ArchiveFileName = Path.Combine(path, ZIP_FILE_NAME);
                    SpaceOptimizationSummary summary = new SpaceOptimizationSummary(DateTime.Now,
                                                                                    new List <FileOptimized>(),
                                                                                    path,
                                                                                    directory.GetCurrentSizeExceptFiles(".zip"));
                    result.MessageBuilder.AppendNewLine(DeleteOldArchivedFiles(summary, daysOld));
                    result.MessageBuilder.AppendNewLine(DeleteOldArchivedFiles(summary, path));
                    summary.CurrentSize = directory.GetCurrentSizeExceptFiles(".zip");
                    result.MessageBuilder.AppendNewLine(summary.ToString());
                    optimizations.Add(summary);
                }
                catch (Exception e)
                {
                    result.MessageBuilder.AppendNewLine(e.ToLogString());
                    result.Status = ResultStatus.Warning;
                }
            }
            HealthMonitorResult resultToStart = StartServices(services);

            result.MessageBuilder.AppendNewLine(resultToStart.MessageBuilder.ToString());
            string spaceSavedMessage = string.Format(SystemConstants.TOTAL_FILE_SIZE_MSG,
                                                     FileSizeUtils.FileSizeDescription(optimizations.Sum(x => x.SpaceSaved)));

            result.MessageBuilder.AppendNewLine(spaceSavedMessage);
            return(result);
        }