コード例 #1
0
        /// <summary>
        /// 实际的调用方法
        /// </summary>
        /// <typeparam name="TState"></typeparam>
        /// <param name="logLevel"></param>
        /// <param name="eventId"></param>
        /// <param name="state"></param>
        /// <param name="exception"></param>
        /// <param name="formatter"></param>
        public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter)
        {
            if (!IsEnabled(logLevel))
            {
                return;
            }

            string msg = formatter(state, exception);

            LogMessageModel logMessageModel = new LogMessageModel()
            {
                LogMsg      = (exception == null) ? msg : new LogExceptionModel(exception, msg).ToString(),
                LogTime     = DateTime.Now.ToString("o"),
                LogLevel    = Enum.GetName(typeof(LogLevel), logLevel),
                LogId       = Guid.NewGuid().ToString(),
                LogAttr     = eventId.Name + eventId.Id,
                LogCategory = this.categoryName
            };

            string strPublishMessage = logMessageModel.ToLogstashMessage();

            this._RabbitMQLoggerProvider.PublishMessage(strPublishMessage, this.envModel.APP_BUILD_NAME);
        }