public string GetEvents(MemoryAppenderWithEvents memoryAppender) { StringBuilder output = new StringBuilder(); // Get any events that may have occurred LoggingEvent[] events = memoryAppender.GetEvents(); // Check that there are events to return if (events != null && events.Length > 0) { // If there are events, we clear them from the logger, since we're done with them memoryAppender.Clear(); // Iterate through each event foreach (LoggingEvent ev in events) { // Construct the line we want to log string line = ev.TimeStamp.ToString("yyyy-MM-dd HH:mm:ss,fff") + " [" + ev.ThreadName + "] " + ev.Level + " " + ev.LoggerName + ": " + ev.RenderedMessage + "\r\n"; // Append to the StringBuilder output.Append(line); } } // Return the constructed output return(output.ToString()); }
public LogWatcher() { // Get the memory appender memoryAppender = (MemoryAppenderWithEvents)Array.Find(LogManager.GetRepository().GetAppenders(), GetMemoryAppender); // Read in the log content this.logContent = GetEvents(memoryAppender); // Add an event handler to handle updates from the MemoryAppender memoryAppender.Updated += HandleUpdate; }