Example #1
0
        /// <summary>
        /// add a log entry to the system console
        /// </summary>
        /// <param name="logItem">log item to be added</param>
        public override void Log(ILogItem logItem)
        {
            CreateEventLogIfNotExisting(
                EventLogName,
                logItem.ProcessName
                );

            EventLogEntryType logEntryType
                = EventLogEntryType.Information;

            switch (logItem.LogType)
            {
            case LogType.Error:
            case LogType.Fatal:
                logEntryType = EventLogEntryType.Error;
                break;

            case LogType.Warning:
                logEntryType = EventLogEntryType.Warning;
                break;

            case LogType.Info:
            case LogType.Debug:
            case LogType.NotDefined:
                logEntryType = EventLogEntryType.Information;
                break;
            }

            var msg  = logItem.Text + Environment.NewLine;
            var cols = LogParameters.LogItemTextFormatter.GetColumns();
            var p    = logItem.GetType().GetProperties();

            foreach (var c in cols)
            {
                if (c != nameof(ILogItem.Text))
                {
                    msg += Environment.NewLine;
                    msg += c + " = " +
                           p.Where(x => x.Name == c)
                           .FirstOrDefault()
                           ?.GetValue(logItem)
                           ?.ToString();
                }
            }

            var evlog = new EventLog
            {
                Log    = EventLogName,
                Source = logItem.ProcessName
            };

            /*using (var evlog =
             *  new EventLog(
             *      EventLogName,
             *      Environment.MachineName,
             *      logItem.ProcessName))
             * {*/
            evlog.WriteEntry(
                msg,
                logEntryType,
                (int)logItem.Index
                );
            //}
        }