Quantcast
Channel: C1 CMS Foundation - Open Source on .NET
Viewing all articles
Browse latest Browse all 2540

New Post: Any way to get an email when errors are logged?

$
0
0
Its pretty easy, yeah.

Create a LogListener Class which inherits from CustomTraceListener. A simple implementation could look like this (this is a listener that forwards logmessages to Gibraltar)
    [ConfigurationElementType(typeof(CustomTraceListenerData))]
    public class GibraltarTraceListener : CustomTraceListener
    {
        public GibraltarTraceListener()
        {
            LogMailer.Initialize();
        }

        public GibraltarTraceListener(string initializeData) : this() { }

        public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data)
        {
            var entry = (LogEntry)data;
            var severity = mapType(entry.Severity);

            if (severity != LogMessageSeverity.None)
            {
                string title = entry.Title;
                title = title.Substring(title.IndexOf(")") + 2);

                Log.Write(severity, "Microsoft Logging", null, null, null, LogWriteMode.Queued, null, title, null, entry.Message);
            }
        }

        public override void Write(string message) { }
        public override void WriteLine(string message) { }

        private LogMessageSeverity mapType(TraceEventType type)
        {
            switch (type)
            {
                case TraceEventType.Critical: return LogMessageSeverity.Critical;
                case TraceEventType.Error: return LogMessageSeverity.Error;
                case TraceEventType.Information: return LogMessageSeverity.Information;
                case TraceEventType.Verbose: return LogMessageSeverity.Verbose;
                case TraceEventType.Warning: return LogMessageSeverity.Warning;

                default: return LogMessageSeverity.None;
            }
        }
    }
Register the listener in App_Data/Composite/composite.config under loggingConfiguration/listeners like this
<add listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.CustomTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.0.0.0" traceOutputOptions="None" type="Your_TraceListener, YourAssembly" name="CustomTraceListener" formatter="Text Formatter" />

Viewing all articles
Browse latest Browse all 2540

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>