Exemple #1
0
        /// <summary>
        /// <para>创建一个非托管的异步日志书写器,书写器使用完成应调用LogWriter.Dispose方法释放资源</para>
        /// <para>此方法适用于日志名称与路径变化频繁,或要求非实时写入,日志数量巨量的场景</para>
        /// <para>可通过配置Log:AsynBuffer来指定初始缓冲区大小,默认4096</para>
        /// </summary>
        /// <param name="path"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public virtual LogWriter CreateAsyncWriter(string name, string path)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            var writer = new AsyncLogWriter(name, path, this.asyncQueue);

            writer.Writing        += this.WritingEvent;
            writer.ToConsole       = this.toConsole;
            writer.ThrowFlushError = this.throwFlushError;
            writer.BufferSize      = GetConfigAsInt("Log:AsynBuffer", 4096);
            //
            return(writer);
        }
 public Logger(string loggerName, AsyncLogWriter writer)
 {
     _loggerName = loggerName;
     _writer     = writer;
     Level       = ParagonTraceSources.Default.Switch.Level;
 }