Exemplo n.º 1
0
        ///////////////////////
        // Internal Mechanics

        private static void consumeQueue()
        {
            NLogAsyncQueueWrapper wrapper = null;

            while (_queue.TryDequeue(out wrapper))
            {
                processQueuedItem(wrapper, _queue.Count);
            }
        }
Exemplo n.º 2
0
        public static void Enqueue(Microsoft.Extensions.Logging.LogLevel loglevel, EventId eventid, object tstate, Exception ex, Delegate formatter, Type tstatetype, string name = "!")
        {
            int countQueued = _queue.Count;

            if (checkCapacity(countQueued))
            {
                NLogAsyncQueueWrapper wrapper = new NLogAsyncQueueWrapper(loglevel, eventid, tstate, ex, formatter, tstatetype, getEnqueueData(name));
                _queue.Enqueue(wrapper);
                _eventThreadAction.Set();
            }
        }
Exemplo n.º 3
0
        // Working Code, commented out to see if calling .Log() is faster... and it is not

        /*
         * private static void processQueuedItem(NLogAsyncQueueWrapper wrapper, int countQueued)
         * {
         *  Type tType = wrapper.TStateType;
         *  var t = Convert.ChangeType(wrapper.TStateObject, tType);
         *
         *  string msg = string.Format("DQ={0},EVT={1},", countQueued.ToString(_qSizeFormatter), wrapper.EventId.Id.ToString("D4"));
         *  msg += wrapper.EnqueueData;
         *
         *  if (wrapper.FormatterFn != null)
         *  {
         *      msg += (string)wrapper.FormatterFn.DynamicInvoke(t, wrapper.Exception);
         *  }
         *  else
         *  {
         *      msg += t.ToString();
         *  }
         *
         *  switch (wrapper.LogLevel)
         *  {
         *      case Microsoft.Extensions.Logging.LogLevel.Trace:
         *          _logger.Log(NLog.LogLevel.Trace, wrapper.Exception, msg);
         *          break;
         *      case Microsoft.Extensions.Logging.LogLevel.Debug:
         *          _logger.Log(NLog.LogLevel.Debug, wrapper.Exception, msg);
         *          break;
         *      case Microsoft.Extensions.Logging.LogLevel.Information:
         *          _logger.Log(NLog.LogLevel.Info, wrapper.Exception, msg);
         *          break;
         *      case Microsoft.Extensions.Logging.LogLevel.Warning:
         *          _logger.Log(NLog.LogLevel.Warn, wrapper.Exception, msg);
         *          break;
         *      case Microsoft.Extensions.Logging.LogLevel.Error:
         *          _logger.Log(NLog.LogLevel.Error, wrapper.Exception, msg);
         *          break;
         *      case Microsoft.Extensions.Logging.LogLevel.Critical:
         *          _logger.Log(NLog.LogLevel.Fatal, wrapper.Exception, msg);
         *          break;
         *      default:
         *          msg = $"[Unrecognised logLevel {wrapper.LogLevel}] " + msg;
         *          _logger.Log(NLog.LogLevel.Error, wrapper.Exception, msg);
         *          break;
         *  }
         *
         * }
         */

        private static void processQueuedItem(NLogAsyncQueueWrapper wrapper, int countQueued)
        {
            Type tType = wrapper.TStateType;
            var  t     = Convert.ChangeType(wrapper.TStateObject, tType);

            string msg = string.Format("DQ={0},EVT={1},", countQueued.ToString(_qSizeFormatter), wrapper.EventId.Id.ToString("D4"));

            msg += wrapper.EnqueueData;

            if (wrapper.FormatterFn != null)
            {
                msg += (string)wrapper.FormatterFn.DynamicInvoke(t, wrapper.Exception);
            }
            else
            {
                msg += t.ToString();
            }

            switch (wrapper.LogLevel)
            {
            case Microsoft.Extensions.Logging.LogLevel.Trace:
                _logger.Trace(wrapper.Exception, msg);
                break;

            case Microsoft.Extensions.Logging.LogLevel.Debug:
                _logger.Debug(wrapper.Exception, msg);
                break;

            case Microsoft.Extensions.Logging.LogLevel.Information:
                _logger.Info(wrapper.Exception, msg);
                break;

            case Microsoft.Extensions.Logging.LogLevel.Warning:
                _logger.Warn(wrapper.Exception, msg);
                break;

            case Microsoft.Extensions.Logging.LogLevel.Error:
                _logger.Error(wrapper.Exception, msg);
                break;

            case Microsoft.Extensions.Logging.LogLevel.Critical:
                _logger.Fatal(wrapper.Exception, msg);
                break;

            default:
                msg = $"[Unrecognised logLevel {wrapper.LogLevel}] " + msg;
                _logger.Error(wrapper.Exception, msg);
                break;
            }
        }