/// <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();
        }
Esempio n. 3
0
 public Builder WithRenderer <TLogStatementRenderer>() where TLogStatementRenderer : ILogStatementRenderer, new()
 {
     _logStatementRenderer = new TLogStatementRenderer();
     return(this);
 }