/// <inheritdoc /> public string Render(ILogStatementRenderer renderer) { if (_value == null) { _value = renderer.Render(this); } return(_value); }
/// <summary> /// Constructs a new <see cref="AsyncLogStatementDispatcher" /// </summary> /// <param name="sinks">The sinks to which the log statements will be written to.</param> public AsyncLogStatementDispatcher(IList <ISink> sinks, ILogStatementRenderer logStatementRenderer) { _sinks = sinks ?? throw new ArgumentNullException(nameof(sinks)); _logStatementRenderer = logStatementRenderer; if (sinks.Count == 0) { throw new ArgumentException("At least one sink must be provided.", nameof(sinks)); } _sinks = sinks; _logQueue = new BlockingCollection <ILogStatement>(); _task = new Task(() => WriteToAllSinks()); _task.Start(); }
public Builder WithRenderer <TLogStatementRenderer>() where TLogStatementRenderer : ILogStatementRenderer, new() { _logStatementRenderer = new TLogStatementRenderer(); return(this); }