/// <summary>
        /// Changes the console formatting options for the specified event type
        /// and returns an object that, when disposed, resets the settings to
        /// their previous values.
        /// </summary>
        /// <param name="e">The type of event to format for.</param>
        /// <returns>
        /// An <see cref="IDisposable"/> that will return the settings to their
        /// previous values.
        /// </returns>
        protected virtual IDisposable FormatForLogLevel(TraceEventType?e)
        {
            switch (e)
            {
            case TraceEventType.Critical:
                return(new ConsoleHighlight(ConsoleColor.White, ConsoleColor.Red));

            case TraceEventType.Error:
                return(new ConsoleHighlight(ConsoleColor.Red));

            case TraceEventType.Warning:
                return(new ConsoleHighlight(ConsoleColor.Yellow));

            case TraceEventType.Information:
                return(new ConsoleHighlight(ConsoleColor.Green));

            case TraceEventType.Verbose:
            case TraceEventType.Start:
            case TraceEventType.Stop:
            case TraceEventType.Resume:
            case TraceEventType.Transfer:
                return(new ConsoleHighlight(ConsoleColor.Gray));
            }

            return(new ConsoleHighlight());
        }
Example #2
0
        public static string GetSubjectPrefix(Exception ex = null, TraceEventType?type = null)
        {
            var    asm = Assembly.GetEntryAssembly();
            string s   = "Unknown Entry Assembly";

            if (asm == null && ex != null)
            {
                var frames = new StackTrace(ex).GetFrames();
                if (frames != null && frames.Length > 0)
                {
                    asm = frames[0].GetMethod().DeclaringType.Assembly;
                }
            }
            if (asm == null)
            {
                asm = Assembly.GetCallingAssembly();
            }
            if (asm != null)
            {
                var last2Nodes = asm.GetName().Name.Split('.').Reverse().Take(2).Reverse();
                s = string.Join(".", last2Nodes);
            }
            if (type.HasValue)
            {
                s += string.Format(" {0}", type);
            }
            ApplyRunModeSuffix(ref s);
            s += ": ";
            return(s);
        }
Example #3
0
        /*
         * Queria ter feito um metodo que recebece o TraceSource e grave em um arquivo
         * Mas deu para entender como gravar em um arquivo
         * Obs.: Código desse 'cs' totalmente fora dos padrões de programação.
         */
        public static void WriteTraceInFile(Stream myFile, string msg, TraceEventType?typeTrace)
        {
            // Create a file for output named LogTrace.txt.
            //Stream myFile = File.Create(@"..\\..\\Log\\LogTrace.txt");
            Trace.AutoFlush = true;//Libera o conteudo automaticamentem

            /* Create a new i writer using the output stream, and add it to
             * the trace listeners.
             */
            TextWriterTraceListener myTextListener = new TextWriterTraceListener(myFile);

            Trace.Listeners.Add(myTextListener);

            //Trace.Listeners.AddRange(traceSource.Listeners);


            //Trace.WriteLine(string.Format("{0:G} -",DateTime.Now));

            switch (typeTrace)
            {
            case TraceEventType.Information:
                Trace.TraceInformation(msg);
                break;

            case TraceEventType.Critical:
                Trace.TraceWarning(msg);
                break;

            case TraceEventType.Error:
                Trace.TraceError(msg);
                break;
            }
            // Flush the output.
            Trace.Flush();
        }
        /// <summary>
        /// Write out the log4net XML message based on the trace event data provided.
        /// </summary>
        /// <param name="timestamp">The date and time when the trace event occurred.</param>
        /// <param name="level">The trace event level.</param>
        /// <param name="logger">The trace source name or category.</param>
        /// <param name="message">The message to log.</param>
        private void WriteEvent(DateTime timestamp, TraceEventType?level, String logger, String message)
        {
            var xml = new StringBuilder();

            using (var stringWriter = new StringWriter(xml))
                using (var xmlWriter = new XmlTextWriter(stringWriter))
                {
                    xmlWriter.WriteStartElement("log4net:event");

                    // Write out core trace event attributes.
                    xmlWriter.WriteAttributeString("logger", logger);
                    xmlWriter.WriteAttributeString("timestamp", timestamp.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:ss.ffffffzzzz"));
                    xmlWriter.WriteAttributeString("level", GetLevelFromType(level));
                    xmlWriter.WriteAttributeString("thread", GetCurrentThread());
                    xmlWriter.WriteAttributeString("domain", domain);

                    // Only capture username if required (slow).
                    if (captureIdentity)
                    {
                        xmlWriter.WriteAttributeString("username", GetCurrentUsername());
                    }

                    // Write child elements.
                    WriteMessage(xmlWriter, message);
                    WriteProperties(xmlWriter, machineName);

                    // Close the trace event element.
                    xmlWriter.WriteEndElement();
                }

            messageWriter.Write(xml.ToString());
        }
        public static LogLevel ToLogLevel(this TraceEventType?traceEventType)
        {
            if (traceEventType != null && eventTypeLevels.TryGetValue(traceEventType.Value, out var value))
            {
                return(value);
            }

            return(LogLevel.None);
        }
Example #6
0
        public void ThrowOnTraceEventType(TraceEventType?traceEventType)
        {
            TestTraceListener listener = Listener;

            if (listener != null)
            {
                listener.ThrowTraceEventType = traceEventType;
            }
        }
Example #7
0
        public void ThrowOnTraceEventType(TraceEventType?traceEventType)
        {
            TestTraceListener listener = Trace.Listeners.OfType <TestTraceListener>()
                                         .FirstOrDefault(x => x.TestId == TestContext.CurrentContext.Test.ID);

            if (listener != null)
            {
                listener.ThrowTraceEventType = traceEventType;
            }
        }
Example #8
0
 public static int CountRows(DateTime fromDate, DateTime?toDate, TraceEventType?type, string appName)
 {
     using (ApplicationDataContext dataContext = new ApplicationDataContext())
     {
         var pred = CreatePredicate(dataContext, fromDate, toDate, type, appName);
         return(dataContext.LogEntries
                .Where(pred)
                .Select(le => le.LogDate)
                .Count());
     }
 }
 public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data)
 {
     lock (traceRequestMonitor)
     {
         tracedData = data;
         tracedSource = source;
         tracedEventType = eventType;
         MockTraceListener.Entries.Add(data as LogEntry);
         MockTraceListener.Instances.Add(this);
         processedTraceRequests++;
     }
 }
Example #10
0
 public TraceEventArgs(TraceEventCache eventCache, string source, TraceEventType? eventType, string category, int? id, object message, object[] args, object[] data, Guid? relatedActivityId)
 {
     EventCache = eventCache;
     Source = source;
     EventType = eventType;
     Category = category;
     Id = id;
     Format = message;
     Args = args;
     Data = data;
     RelatedActivityId = relatedActivityId;
 }
Example #11
0
 public TraceEventArgs(TraceEventCache eventCache, string source, TraceEventType?eventType, string category, int?id, object message, object[] args, object[] data, Guid?relatedActivityId)
 {
     EventCache        = eventCache;
     Source            = source;
     EventType         = eventType;
     Category          = category;
     Id                = id;
     Format            = message;
     Args              = args;
     Data              = data;
     RelatedActivityId = relatedActivityId;
 }
Example #12
0
 public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data)
 {
     lock (traceRequestMonitor)
     {
         this.tracedData      = data;
         this.tracedSource    = source;
         this.tracedEventType = eventType;
         MockTraceListener.Entries.Add(data as LogEntry);
         MockTraceListener.Instances.Add(this);
         processedTraceRequests++;
     }
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="TraceEventData"/>
 /// class with the specified parameters.
 /// </summary>
 /// <param name="eventCache">
 /// The <see cref="TraceEventCache"/> object.
 /// </param>
 /// <param name="source">The source of the event.</param>
 /// <param name="eventType">The type of the event.</param>
 /// <param name="id">The ID of the event.</param>
 /// <param name="customerID">The ID of the Customer who was active on the moment of writing</param>
 /// <param name="sessionID">The ID of the Session that was active on the moment of writing</param>
 public TraceEventData(TraceEventCache eventCache, string source, TraceEventType?eventType, int id, Guid?customerID = null, string sessionID = null)
 {
     Cache = eventCache;
     if (string.IsNullOrEmpty(source))
     {
         source = GetCallingSource();
     }
     Source     = source;
     Type       = eventType;
     ID         = id;
     CustomerID = customerID;
     SessionID  = sessionID;
 }
        /// <summary>
        /// Overrides the <paramref name="configurationObject"/>'s properties with the Group Policy values from the
        /// registry.
        /// </summary>
        /// <param name="configurationObject">The configuration object for instances that must be managed.</param>
        /// <param name="policyKey">The <see cref="IRegistryKey"/> which holds the Group Policy overrides for the
        /// configuration element.</param>
        /// <remarks>Subclasses implementing this method must retrieve all the override values from the registry
        /// before making modifications to the <paramref name="configurationObject"/> so any error retrieving
        /// the override values will cancel policy processing.</remarks>
        protected override void OverrideWithGroupPolicies(LoggingExceptionHandlerData configurationObject, IRegistryKey policyKey)
        {
            int?           eventIdOverride       = policyKey.GetIntValue(EventIdPropertyName);
            Type           formatterTypeOverride = policyKey.GetTypeValue(FormatterTypePropertyName);
            String         logCategoryOverride   = policyKey.GetStringValue(LogCategoryPropertyName);
            int?           priorityOverride      = policyKey.GetIntValue(PriorityPropertyName);
            TraceEventType?severityOverride      = policyKey.GetEnumValue <TraceEventType>(SeverityPropertyName);
            String         titleOverride         = policyKey.GetStringValue(TitlePropertyName);

            configurationObject.EventId       = eventIdOverride.Value;
            configurationObject.FormatterType = formatterTypeOverride;
            configurationObject.LogCategory   = logCategoryOverride;
            configurationObject.Priority      = priorityOverride.Value;
            configurationObject.Severity      = severityOverride.Value;
            configurationObject.Title         = titleOverride;
        }
Example #15
0
        // Protected implementation of Dispose pattern.
        protected virtual void Dispose(bool disposing)
        {
            if (disposed)
            {
                return;
            }

            if (disposing)
            {
                TraceEventType?type = _hasError ? TraceEventType.Error : (TraceEventType?)null;
                foreach (TraceInfo info in _traceInfos)
                {
                    Trace.TraceEvent(type.HasValue ? type.Value : info.Type, info.EventId, _traceContext.ToString() + " " + info.Format, info.Args);
                }
            }

            disposed = true;
        }
Example #16
0
        /// <summary>
        /// Reads the LogEntry objects as requested
        /// Makes dummy calls to Application and LogType properties to allow accessing them without the source data context object
        /// </summary>
        /// <param name="startRow">Zero based start row number</param>
        /// <param name="pageSize">Page size</param>
        /// <returns>The found LogEntry objects</returns>
        public static List <LogEntry> LoadByPage(DateTime fromDate, DateTime?toDate, TraceEventType?type, string appName, int startRow, int pageSize)
        {
            using (ApplicationDataContext dataContext = new ApplicationDataContext())
            {
                var loadOptions = new DataLoadOptions();
                loadOptions.LoadWith <LogEntry>(le => le.LogType);
                loadOptions.LoadWith <LogEntry>(le => le.Application);
                dataContext.LoadOptions = loadOptions;

                var pred = CreatePredicate(dataContext, fromDate, toDate, type, appName);

                // Read records
                var ret = dataContext.LogEntries
                          .Where(pred)
                          .OrderByDescending(le => le.LogDate)
                          .Skip(startRow)
                          .Take(pageSize)
                          .ToList();

                return(ret);
            }
        }
Example #17
0
        /// <summary>
        /// Get the <see cref="String"/> logging level based on the <see cref="TraceEventType"/>.
        /// </summary>
        /// <param name="eventType">The trace event type to capture.</param>
        private static String GetLevelFromType(TraceEventType?eventType)
        {
            if (!eventType.HasValue)
            {
                return("TRACE");
            }

            switch (eventType)
            {
            case TraceEventType.Critical: return("FATAL");

            case TraceEventType.Error: return("ERROR");

            case TraceEventType.Warning: return("WARN");

            case TraceEventType.Information: return("INFO");

            case TraceEventType.Verbose: return("DEBUG");

            default: return("TRACE");
            }
        }
Example #18
0
 private void ProcessLogEventInfo(LogLevel logLevel, string loggerName, [Localizable(false)] string message, object[] arguments, int?eventId, TraceEventType?eventType, Guid?relatedActiviyId)
Example #19
0
        public static System.Linq.Expressions.Expression <Func <LogEntry, bool> > CreatePredicate(ApplicationDataContext dataContext, DateTime fromDate, DateTime?toDate, TraceEventType?type, string appName)
        {
            var pred = CprBroker.Utilities.PredicateBuilder.True <LogEntry>();

            if (toDate.HasValue && toDate.Value < fromDate)
            {
                var tmp = fromDate;
                fromDate = toDate.Value;
                toDate   = tmp;
            }
            // By date
            pred = pred.And(le => le.LogDate >= fromDate);
            if (toDate.HasValue)
            {
                pred = pred.And(le => le.LogDate < toDate.Value.AddDays(1));
            }

            // Byte type
            if (type.HasValue)
            {
                pred = pred.And(le => le.LogTypeId == (int)type.Value);
            }

            // By app
            if (!string.IsNullOrEmpty(appName))
            {
                var appId = dataContext.Applications.Where(app => app.Name == appName).Select(app => app.ApplicationId).FirstOrDefault();
                pred = pred.And(le => le.ApplicationId == appId);
            }
            return(pred);
        }
Example #20
0
        /// <summary>
        /// Process the log event
        /// <param name="logLevel">The log level.</param>
        /// <param name="loggerName">The name of the logger.</param>
        /// <param name="message">The log message.</param>
        /// <param name="arguments">The log parameters.</param>
        /// <param name="eventId">The event id.</param>
        /// <param name="eventType">The event type.</param>
        /// <param name="relatedActiviyId">The related activity id.</param>
        /// </summary>
        protected virtual void ProcessLogEventInfo(LogLevel logLevel, string loggerName, [Localizable(false)] string message, object[] arguments, int?eventId, TraceEventType?eventType, Guid?relatedActiviyId)
        {
            StackTrace stackTrace = AutoLoggerName ? new StackTrace() : null;
            ILogger    logger     = GetLogger(loggerName, stackTrace, out int userFrameIndex);

            logLevel = _forceLogLevel ?? logLevel;
            if (!logger.IsEnabled(logLevel))
            {
                return; // We are done
            }

            var ev = new LogEventInfo();

            ev.LoggerName = logger.Name;
            ev.Level      = logLevel;
            if (eventType.HasValue)
            {
                ev.Properties.Add("EventType", eventType.Value);
            }

            if (relatedActiviyId.HasValue)
            {
                ev.Properties.Add("RelatedActivityID", relatedActiviyId.Value);
            }

            ev.Message    = message;
            ev.Parameters = arguments;
            ev.Level      = _forceLogLevel ?? logLevel;

            if (eventId.HasValue)
            {
                ev.Properties.Add("EventID", eventId.Value);
            }

            if (stackTrace != null && userFrameIndex >= 0)
            {
                ev.SetStackTrace(stackTrace, userFrameIndex);
            }

            logger.Log(ev);
        }
Example #21
0
        /// <summary>
        /// Process the log event
        /// <param name="logLevel">The log level.</param>
        /// <param name="loggerName">The name of the logger.</param>
        /// <param name="message">The log message.</param>
        /// <param name="arguments">The log parameters.</param>
        /// <param name="eventId">The event id.</param>
        /// <param name="eventType">The event type.</param>
        /// <param name="relatedActiviyId">The related activity id.</param>
        /// </summary>
        protected virtual void ProcessLogEventInfo(LogLevel logLevel, string loggerName, [Localizable(false)] string message, object[] arguments, int?eventId, TraceEventType?eventType, Guid?relatedActiviyId)
        {
            loggerName = (loggerName ?? Name) ?? string.Empty;

            StackTrace stackTrace     = null;
            int        userFrameIndex = -1;

            if (AutoLoggerName)
            {
                stackTrace = new StackTrace();
                for (int i = 0; i < stackTrace.FrameCount; ++i)
                {
                    var frame = stackTrace.GetFrame(i);
                    loggerName = Internal.StackTraceUsageUtils.LookupClassNameFromStackFrame(frame);
                    if (!string.IsNullOrEmpty(loggerName))
                    {
                        userFrameIndex = i;
                        break;
                    }
                }
            }

            ILogger logger;

            if (LogFactory != null)
            {
                logger = LogFactory.GetLogger(loggerName);
            }
            else
            {
                logger = LogManager.GetLogger(loggerName);
            }

            logLevel = _forceLogLevel ?? logLevel;
            if (!logger.IsEnabled(logLevel))
            {
                return; // We are done
            }

            var ev = new LogEventInfo();

            ev.LoggerName = loggerName;
            ev.Level      = logLevel;
            if (eventType.HasValue)
            {
                ev.Properties.Add("EventType", eventType.Value);
            }

            if (relatedActiviyId.HasValue)
            {
                ev.Properties.Add("RelatedActivityID", relatedActiviyId.Value);
            }

            ev.Message    = message;
            ev.Parameters = arguments;
            ev.Level      = _forceLogLevel ?? logLevel;

            if (eventId.HasValue)
            {
                ev.Properties.Add("EventID", eventId.Value);
            }

            if (stackTrace != null && userFrameIndex >= 0)
            {
                ev.SetStackTrace(stackTrace, userFrameIndex);
            }

            logger.Log(ev);
        }
Example #22
0
        /// <summary>
        /// Process the log event
        /// <param name="logLevel">The log level.</param>
        /// <param name="loggerName">The name of the logger.</param>
        /// <param name="message">The log message.</param>
        /// <param name="arguments">The log parameters.</param>
        /// <param name="eventId">The event id.</param>
        /// <param name="eventType">The event type.</param>
        /// <param name="relatedActiviyId">The related activity id.</param>
        /// </summary>
        protected virtual void ProcessLogEventInfo(LogLevel logLevel, string loggerName, [Localizable(false)] string message, object[] arguments, int?eventId, TraceEventType?eventType, Guid?relatedActiviyId)
        {
            loggerName = (loggerName ?? Name) ?? string.Empty;

            StackTrace stackTrace     = null;
            int        userFrameIndex = -1;

            if (AutoLoggerName)
            {
                stackTrace = new StackTrace();
                MethodBase userMethod = null;

                for (int i = 0; i < stackTrace.FrameCount; ++i)
                {
                    var frame  = stackTrace.GetFrame(i);
                    var method = frame.GetMethod();

                    if (method.DeclaringType == GetType())
                    {
                        // skip all methods of this type
                        continue;
                    }

                    if (method.DeclaringType != null && method.DeclaringType.Assembly == systemAssembly)
                    {
                        // skip all methods from System.dll
                        continue;
                    }

                    userFrameIndex = i;
                    userMethod     = method;
                    break;
                }

                if (userFrameIndex >= 0)
                {
                    if (userMethod != null && userMethod.DeclaringType != null)
                    {
                        loggerName = userMethod.DeclaringType.FullName;
                    }
                }
            }

            ILogger logger;

            if (LogFactory != null)
            {
                logger = LogFactory.GetLogger(loggerName);
            }
            else
            {
                logger = LogManager.GetLogger(loggerName);
            }

            logLevel = _forceLogLevel ?? logLevel;
            if (!logger.IsEnabled(logLevel))
            {
                return; // We are done
            }

            var ev = new LogEventInfo();

            ev.LoggerName = loggerName;
            ev.Level      = logLevel;
            if (eventType.HasValue)
            {
                ev.Properties.Add("EventType", eventType.Value);
            }

            if (relatedActiviyId.HasValue)
            {
                ev.Properties.Add("RelatedActivityID", relatedActiviyId.Value);
            }

            ev.Message    = message;
            ev.Parameters = arguments;
            ev.Level      = _forceLogLevel ?? logLevel;

            if (eventId.HasValue)
            {
                ev.Properties.Add("EventID", eventId.Value);
            }

            if (stackTrace != null && userFrameIndex >= 0)
            {
                ev.SetStackTrace(stackTrace, userFrameIndex);
            }

            logger.Log(ev);
        }