コード例 #1
0
        protected override void Write(LogEventInfo logEvent)
        {
            if (logEvent == null)
            {
                throw new ArgumentNullException(nameof(logEvent));
            }

            var timestamp   = logEvent.TimeStamp;
            var level       = NLogUtils.ConvertLevel(logEvent.Level);
            var message     = logEvent.FormattedMessage;
            var exception   = logEvent.Exception;
            var processId   = Process.GetCurrentProcess().Id;
            var threadId    = Thread.CurrentThread.ManagedThreadId;
            var userName    = LogEvent.CurrentUserName;
            var machineName = Environment.MachineName;

            Dictionary <string, object> properties = null;

            if (logEvent.HasProperties)
            {
                properties = new Dictionary <string, object>();

                foreach (var logEventProperty in logEvent.Properties)
                {
                    var propertyName = logEventProperty.Key.ToString();

                    properties[propertyName] = logEventProperty.Value;
                }
            }

            if (Attributes.Count > 0)
            {
                properties ??= new Dictionary <string, object>();

                foreach (var attribute in Attributes)
                {
                    var propertyName = attribute.Name;

                    properties[propertyName] = attribute.Layout.Render(logEvent);
                }
            }

            var coreLogEvent = new LogEvent(timestamp, level, message, exception, processId, threadId, userName, machineName, properties);

            Transport.Send(coreLogEvent);
        }
            public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter)
            {
                if (formatter == null)
                {
                    throw new ArgumentNullException(nameof(formatter));
                }

                var nlogLevel = NLogUtils.ConvertLevel(logLevel);
                var message   = formatter(state, exception);

                if (exception != null)
                {
                    InternalLogger.Log(exception, nlogLevel, message);
                }
                else
                {
                    InternalLogger.Log(nlogLevel, message);
                }
            }