override protected void Append(LoggingEvent loggingEvent) { // Skip if DNN Dev Tools is not installed (to prevent errors with log messages just after module has been uninstalled) if (!ModuleUtil.IsInstalled()) { return; } // Create log event var logMessageEvent = new LogMessage(loggingEvent); // Queue logging event LogMessageQueue.Enqueue(logMessageEvent); if (LogMessageQueue.Count > QueueSize) { LogMessage l; LogMessageQueue.TryDequeue(out l); } // Send log event to clients if log level is not too low var level = ServiceLocator.ConfigService.GetLogMessageTraceLevel(); if (level.Value > loggingEvent.Level.Value) { return; } GlobalHost.ConnectionManager.GetHubContext <DnnDevToolsNotificationHub>().Clients.All.OnEvent(logMessageEvent); }
private void OnCreated(object source, FileSystemEventArgs e) { // Do nothing if module has been uninstalled if (!ModuleUtil.IsInstalled()) { return; } // Do nothing, if DNN Dev Tools or mail catch is not enabled if (!ServiceLocator.ConfigService.GetEnable() || !ServiceLocator.ConfigService.GetEnableMailCatch()) { return; } Logger.DebugFormat("New mail in pickup folder detected (File: {0})", e.FullPath); // Start new background thread and wait until file is completely written and no longer locked new Thread(() => { var start = DateTime.Now; var file = new FileInfo(e.FullPath); while (true) { Thread.Sleep(100); // Break if file is not released after max timeout if (start - DateTime.Now > new TimeSpan(0, 0, 1)) { break; } // Test if file is still locked if (FileUtil.IsFileLocked(file)) { continue; } // Try to parse mail var message = EmlFileParser.ParseEmlFile(e.FullPath); if (message == null) { return; } // Send mail notification to clients var mail = new Mail(System.IO.Path.GetFileNameWithoutExtension(e.Name), message); GlobalHost.ConnectionManager.GetHubContext <DnnDevToolsNotificationHub>().Clients.All.OnEvent(mail); break; } }).Start(); }
private static void OnReleaseRequestState(object sender, EventArgs e) { // Do nothing if module has been uninstalled if (!ModuleUtil.IsInstalled()) { return; } var request = HttpContext.Current.Request; if (!"~/DesktopModules/DnnDevTools/Overlay.aspx".Equals(request.AppRelativeCurrentExecutionFilePath, StringComparison.OrdinalIgnoreCase)) { return; } HttpContext.Current.Response.Filter = new OverlayLocalizeResourceFilter(HttpContext.Current.Response.Filter); }
private static void OnPreRequestHandlerExecute(object sender, EventArgs e) { // Do nothing if module has been uninstalled if (!ModuleUtil.IsInstalled()) { return; } var context = HttpContext.Current; var page = context?.Handler as CDefault; if (page == null) { return; } page.Init += OnPageInit; }
internal void Run() { Logger.Debug("Initializing DNN event trace"); var lastLog = DateTime.Now; new Thread(() => { var totalRecords = 0; while (true) { Thread.Sleep(1000); // Do nothing if module has been uninstalled if (!ModuleUtil.IsInstalled()) { return; } // Skip if DnnDevTools or EnableEventCatch is not enabled if (!ServiceLocator.ConfigService.GetEnable() || !ServiceLocator.ConfigService.GetEnableDnnEventTrace()) { return; } // Get last 100 log entries var logs = LogController.Instance.GetLogs(Null.NullInteger, Null.NullString, 100, 0, ref totalRecords); var newLogs = logs.Where(e => e.LogCreateDate > lastLog).ToList(); lastLog = logs.Max(e => e.LogCreateDate); // ReSharper disable once LoopCanBePartlyConvertedToQuery foreach (var newLog in newLogs) { // Send DNN event notification to clients var eventNotification = new DnnEvent(newLog); GlobalHost.ConnectionManager.GetHubContext <DnnDevToolsNotificationHub>().Clients.All.OnEvent(eventNotification); } } }).Start(); }