protected override async Task ExecuteAsync(CancellationToken stoppingToken) { await Task.Yield(); while (!stoppingToken.IsCancellationRequested) { await Task.Delay(TimeSpan.FromSeconds(1), stoppingToken); var defaultLevel = LogEventLevel.Information; if (_logLevelState.ValidToUtc is null) { continue; } if (_customClock.UtcNow() > _logLevelState.ValidToUtc && _logLevelState.LevelSwitch.MinimumLevel != defaultLevel) { _logLevelState.LevelSwitch.MinimumLevel = defaultLevel; _logLevelState.ValidToUtc = null; _logger.Information("Log level reset to {DefaultLevel}", defaultLevel); } } }
public void SetLevel(LogEventLevel newLevel, TimeSpan timeSpan) { var oldLevel = LevelSwitch.MinimumLevel; if (oldLevel != newLevel) { _logger.Information("Switching log level from {OldLogLevel} to {NewLogLevel}", oldLevel, newLevel); LevelSwitch.MinimumLevel = newLevel; if (timeSpan < TimeSpan.Zero || timeSpan.TotalHours > 1) { const int minutes = 5; timeSpan = TimeSpan.FromMinutes(minutes); _logger.Warning("Invalid timespan for log level, setting time to {Minutes} minutes", minutes); } _logger.Information("Switched log level from {OldLogLevel} to {NewLogLevel} for {Minutes}", oldLevel, newLevel, timeSpan.TotalMinutes.ToString("F1")); ValidToUtc = _customClock.UtcNow().Add(timeSpan); } }
public async Task <DeploymentTaskResult> ExecuteDeploymentAsync( [NotNull] DeploymentTask deploymentTask, ILogger logger, CancellationToken cancellationToken) { if (deploymentTask == null) { throw new ArgumentNullException(nameof(deploymentTask)); } DateTime start = _customClock.UtcNow().UtcDateTime; Stopwatch stopwatch = Stopwatch.StartNew(); (ExitCode, DateTime)result; DirectoryInfo deploymentJobsDirectory = EnsureDeploymentJobsDirectoryExists(); DeploymentTarget deploymentTarget = null; try { deploymentTarget = await _targetSource.GetDeploymentTargetAsync(deploymentTask.DeploymentTargetId, cancellationToken); VerifyPreReleaseAllowed(deploymentTask.SemanticVersion, deploymentTarget, deploymentTask.PackageId, logger); VerifyAllowedPackageIsAllowed(deploymentTarget, deploymentTask.PackageId, logger); result = await RunDeploymentToolAsync(deploymentTask, deploymentJobsDirectory, deploymentTarget, logger, cancellationToken); } catch (Exception ex) when(!ex.IsFatal()) { result = (ExitCode.Failure, _customClock.UtcNow().UtcDateTime); logger.Error(ex, "Error deploying"); } stopwatch.Stop(); string metadataContent = LogJobMetadata(deploymentTask, start, result.Item2, stopwatch, result.Item1, deploymentJobsDirectory, deploymentTarget); var deploymentTaskResult = new DeploymentTaskResult(deploymentTask.DeploymentTaskId, deploymentTask.DeploymentTargetId, result.Item1, start, result.Item2, metadataContent); await _mediator.Publish(new DeploymentMetadataLogNotification(deploymentTask, deploymentTaskResult), cancellationToken); return(deploymentTaskResult); }