Exemple #1
0
        protected void WriteMessage(Stream stream, TraceMessage message)
        {
            if (stream.Length == 0)
            {
                string msgHeader = string.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8}",
                                                 "Date".PadRight(24),
                                                 "MessageType".PadRight(13),
                                                 "MessageKind".PadRight(14),
                                                 "User".PadRight(15),
                                                 "PID".PadRight(6),
                                                 "TID".PadRight(6),
                                                 "ID".PadRight(6),
                                                 "ActivityID".PadRight(40),
                                                 "Description");
                stream.Write(Encoding.Default.GetBytes(msgHeader),
                             0, msgHeader.Length);

                // Add Carriage Return, Line feed.
                stream.Write(new byte[] { 0x0D, 0x0A }, 0, 2);
            }

            var description = new StringBuilder(message.FullText);

            if (null != message.Source && !String.IsNullOrWhiteSpace(message.Source.Stacktrace) && (message.Type.Equals("Error") || message.Type.Equals("Fatal")))
            {
                description.AppendLine();
                description.Append(message.Source.Stacktrace);
            }

            string msg = string.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8} - {9} - {10}",
                                       message.Source.Date.ToString("dd/MM/yyyy HH:mm:ss,fff").PadRight(24),
                                       message.Type.ToString().PadRight(13),
                                       message.Category.ToString().PadRight(14),
                                       message.Source.IdentityName.PadRight(15),
                                       message.Source.ProcessId.ToString().PadRight(6),
                                       message.Source.ThreadId.ToString().PadRight(6),
                                       message.Source.EventId.ToString().PadRight(6),
                                       String.IsNullOrWhiteSpace(message.ActivityId) ? string.Empty.PadRight(40) : message.ActivityId.PadRight(40),
                                       message.Source.TypeName,
                                       message.Source.MethodName,
                                       description);

            stream.Write(Encoding.Default.GetBytes(msg), 0, msg.Length);
            // Add Carriage Return, Line feed.
            stream.Write(new byte[] { 0x0D, 0x0A }, 0, 2);
        }
Exemple #2
0
        // serialize a message in a folder so it can be processed after!
        protected void Save(TraceMessage msg)
        {
            if (String.IsNullOrWhiteSpace(_directory))
            {
                return; // No backup functionality.
            }
            var file = Path.Combine(_directory, Guid.NewGuid().ToString()) + ".msglog";

            try
            {
                var serializer = new DataContractSerializer(typeof(TraceMessage));

                serializer.WriteObject(file, msg);
            }
            catch (Exception)
            {
                // Check if a file is created (happens with a file size equal to zero or incomplete serialization or...
                // Message is lost.
                Delete(file);
            }
        }
Exemple #3
0
 protected abstract void ProcessMessage(TraceMessage message);