//formats a diagnostics message using the appropriate date time format as well as site and log level information private static string _FormatDiagnosticsMessage(Site site,HttpConnection conn,HttpRequest request, DiagnosticsLevels logLevel, string Message) { string sfs = "UNKNOWN"; if (request != null) sfs = "HttpRequest[" + request.ID.ToString() + "]"; else if (conn != null) sfs = "HttpConnection[" + conn.ID.ToString() + "]"; else if (BackgroundOperationRun.Current != null) sfs = "BackgroundRunThread[" + BackgroundOperationRun.Current.ID.ToString() + "][" + BackgroundOperationRun.Current.Call.type.FullName + "." + BackgroundOperationRun.Current.Call.Method.Name + "]"; else { try { sfs = "Thread[" + Thread.CurrentThread.Name + "]"; } catch (Exception e) { } } if (site != null) { if (Settings.UseServerNameInLogging) { if (site.ServerName != null) return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "|" + logLevel.ToString() + "|" + site.ServerName+"|"+sfs+"|" + Message; else if (conn!=null) return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "|" + logLevel.ToString() + "|" + conn.Listener.IP.ToString() + ":" + conn.Listener.Port.ToString() + "|" + sfs + "|" + Message; else return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "|" + logLevel.ToString() + "|" + site.ListenOn[0].Address.ToString() + ":" + site.ListenOn[0].Port.ToString() + "|" + sfs + "|" + Message; }else return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "|" + logLevel.ToString() + "|" + sfs + "|" + Message; } else if (conn != null) { if (Settings.UseServerNameInLogging) return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "|" + logLevel.ToString() + "|" + conn.Listener.IP.ToString() + ":" + conn.Listener.Port.ToString() + "|" + sfs + "|" + Message; } return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "|" + logLevel.ToString() + "|null|" + sfs + "|" + Message; }
private static void AppendMessageToFile(Site site,HttpConnection conn,HttpRequest request, DiagnosticsLevels logLevel, string Message) { Monitor.Enter(_lock); _messages.Enqueue(_FormatDiagnosticsMessage(site,conn,request, logLevel, Message)); Monitor.Exit(_lock); }