Beispiel #1
0
        /// <summary>
        /// Writes the internal.
        /// </summary>
        /// <param name="level">The level.</param>
        /// <param name="message">The message.</param>
        private void WriteInternal(LogLevel level, string message)
        {
            if (!_level.HasFlag(level))
            {
                return;
            }

            var type = LevelToEventLogEntryType(level);

            if (message.Length > MaximumPayloadLengthChars)
            {
                message = message.Substring(0, MaximumPayloadLengthChars);
            }

            _log.WriteEntry(message, type, _eventIdProvider.ComputeEventId(message));
        }
Beispiel #2
0
        /// <summary>
        /// Emit the provided log event to the sink.
        /// </summary>
        /// <param name="logEvent">The log event to write.</param>
        /// <remarks>
        /// <see cref="LogEventLevel.Debug" />, <see cref="LogEventLevel.Information" /> and <see cref="LogEventLevel.Verbose" /> are registered as <see cref="EventLogEntryType.Information" />.
        /// <see cref="LogEventLevel.Error" />, <see cref="LogEventLevel.Fatal" /> are registered as <see cref="EventLogEntryType.Error" />.
        /// <see cref="LogEventLevel.Warning" /> are registered as <see cref="EventLogEntryType.Warning" />.
        /// The Event ID in the Windows log will be set to the integer value of the <paramref name="logEvent"/>'s <see cref="LogEvent.Level"/> property, so that the log can be filtered with more granularity.</remarks>
        public void Emit(LogEvent logEvent)
        {
            if (logEvent == null)
            {
                throw new ArgumentNullException(nameof(logEvent));
            }

            var type = LevelToEventLogEntryType(logEvent.Level);

            var payloadWriter = new StringWriter();

            _textFormatter.Format(logEvent, payloadWriter);

            // The payload is limited in length and allowed chars, see: https://msdn.microsoft.com/en-us/library/e29k5ebc%28v=vs.110%29.aspx
            var payload = payloadWriter.ToString();

            if (payload.Length > MaximumPayloadLengthChars)
            {
                SelfLog.WriteLine("Trimming long event log entry payload to {0} characters", MaximumPayloadLengthChars);
                payload = payload.Substring(0, MaximumPayloadLengthChars);
            }

            _log.WriteEntry(payload, type, _eventIdProvider.ComputeEventId(logEvent));
        }