/// <summary> /// Log string resolve /// </summary> /// <param name="value"></param> public void OnNext(LineString value) { // Get reference var _logger = logger; // Is disposed? if (_logger == null) { return; } // Get severity LineStatusSeverity severity = value.Severity; // Severity under threshold? if (severity < this.severity) { return; } // Write status if (value.Exception == null) { _logger.WriteLine(value.DebugInfo); } else { _logger.WriteLine("{0} {1}: {2}", value.DebugInfo, value.Exception.GetType().Name, value.Exception.Message); } }
/// <summary> /// Log string /// </summary> /// <param name="value"></param> public void OnNext(LineString value) { // Get reference var _logger = logger; // Is disposed? if (_logger == null) { return; } // Get severity LineStatusSeverity severity = value.Severity; // Write status if (_logger.IsEnabled(LogLevel.Trace) && severity == LineStatusSeverity.Ok) { _logger.LogInformation(value.Exception, value.DebugInfo); return; } if (_logger.IsEnabled(LogLevel.Warning) && severity == LineStatusSeverity.Warning) { _logger.LogWarning(value.Exception, value.DebugInfo); return; } if (_logger.IsEnabled(LogLevel.Error) && severity >= LineStatusSeverity.Error) { _logger.LogError(value.Exception, value.DebugInfo); return; } }
/// <summary> /// Log string /// </summary> /// <param name="value"></param> public void OnNext(LineResourceBytes value) { // Get reference var _logger = logger; // Is disposed? if (_logger == null) { return; } // Get severity LineStatusSeverity severity = value.Severity; // Write status if (severity == LineStatusSeverity.Ok && _logger.IsInfoEnabled) { _logger.Info(value.Exception, value.DebugInfo); return; } if (severity == LineStatusSeverity.Warning && _logger.IsWarnEnabled) { _logger.Warn(value.Exception, value.DebugInfo); return; } if (severity >= LineStatusSeverity.Error && _logger.IsErrorEnabled) { _logger.Error(value.Exception, value.DebugInfo); return; } }
/// <summary> /// Log resource resolve /// </summary> /// <param name="value"></param> public void OnNext(LineResourceStream value) { if (disposed) { return; } // Get severity LineStatusSeverity severity = value.Severity; // Threshold if (severity < this.severity) { return; } // Write status if (value.Exception == null) { // No exception switch (severity) { case LineStatusSeverity.Ok: Trace.TraceInformation(value.DebugInfo); return; case LineStatusSeverity.Warning: Trace.TraceWarning(value.DebugInfo); return; case LineStatusSeverity.Error: case LineStatusSeverity.Failed: Trace.TraceError(value.DebugInfo); return; } } else { // With exception switch (severity) { case LineStatusSeverity.Ok: Trace.TraceInformation("{0} {1}: {2}", value.DebugInfo, value.Exception.GetType().Name, value.Exception); return; case LineStatusSeverity.Warning: Trace.TraceWarning("{0} {1}: {2}", value.DebugInfo, value.Exception.GetType().Name, value.Exception); return; case LineStatusSeverity.Error: case LineStatusSeverity.Failed: Trace.TraceError("{0} {1}: {2}", value.DebugInfo, value.Exception.GetType().Name, value.Exception); return; } } }
/// <summary> /// Returns whether the specified status severity should use a custom response. /// </summary> /// <param name="statusSeverity">The status severity value.</param> /// <returns> /// <see langword="true"/> if the status should use a custom response; otherwise <see langword="false"/>. /// </returns> private static bool ShouldStatusUseCustomResponse(LineStatusSeverity statusSeverity) { switch (statusSeverity) { case LineStatusSeverity.GoodService: case LineStatusSeverity.NoIssues: case LineStatusSeverity.ServiceClosed: return(true); default: return(false); } }
/// <summary> /// Append <see cref="System.Diagnostics.Trace"/> logger. /// </summary> /// <param name="line"></param> /// <param name="severity"> /// <list type="bullet"> /// <item>0 - OK</item> /// <item>1 - Warning</item> /// <item>2 - Error</item> /// <item>3 - Failed</item> /// </list> /// </param> /// <returns></returns> public static ILineLogger DiagnosticsTrace(this ILine line, LineStatusSeverity severity = LineStatusSeverity.Warning) => line.Logger(new LineDiagnosticsTrace(severity));
/// <summary> /// Try to add a <paramref name="logger"/> to <paramref name="line"/>. /// </summary> /// <param name="line"></param> /// <param name="logger">writer such as Console.Out</param> /// <param name="severity"> /// <list type="bullet"> /// <item>0 - OK</item> /// <item>1 - Warning</item> /// <item>2 - Error</item> /// <item>3 - Failed</item> /// </list> /// </param> /// <returns>disposable subscription handle, or null if <paramref name="line"/> cannot be observed</returns> public static ILineLogger Logger(this ILine line, TextWriter logger, LineStatusSeverity severity = LineStatusSeverity.Warning) => line.Logger(new LineTextLogger(logger, severity));
/// <summary> /// Create logger /// </summary> /// <param name="logger"></param> /// <param name="severity"></param> public LineTextLogger(TextWriter logger, LineStatusSeverity severity) { this.logger = logger; this.severity = severity; }
/// <summary> /// Create logger /// </summary> /// <param name="severity"></param> public LineDiagnosticsTrace(LineStatusSeverity severity) { this.severity = severity; }