private void AppendEndHeader(StringBuilder output, TraceEventCache eventCache)
        {
            output.Append("\" />");
            output.Append("<Execution ProcessName=\"");
            output.Append(traceFormatter.FormatProcessName());
            output.Append("\" ProcessID=\"");
            uint processId = (uint)(int)traceFormatter.FormatProcessId(eventCache);

            output.Append(processId.ToString(CultureInfo.InvariantCulture));
            output.Append("\" ThreadID=\"");
            if (eventCache != null)
            {
                AppendEscaped(output, eventCache.ThreadId.ToString(CultureInfo.InvariantCulture));
            }
            else
            {
                int threadId = Thread.CurrentThread.ManagedThreadId;
                AppendEscaped(output, threadId.ToString(CultureInfo.InvariantCulture));
            }
            output.Append("\" />");
            output.Append("<Channel/>");
            output.Append("<Computer>");
            output.Append(this.machineName);
            output.Append("</Computer>");
            output.Append("</System>");
            output.Append("<ApplicationData>");
        }
        private string GetCurrentFilePath(TraceEventCache eventCache)
        {
            var result = StringTemplate.Format(CultureInfo.CurrentCulture, FilePathTemplate,
                                               delegate(string name, out object value)
            {
                switch (name.ToUpperInvariant())
                {
                case "ACTIVITYID":
                    value = Trace.CorrelationManager.ActivityId;
                    break;

                case "APPDATA":
                    value = traceFormatter.HttpTraceContext.AppDataPath;
                    break;

                case "APPDOMAIN":
                    value = AppDomain.CurrentDomain.FriendlyName;
                    break;

                case "APPLICATIONNAME":
                    value = traceFormatter.FormatApplicationName();
                    break;

                case "DATETIME":
                case "UTCDATETIME":
                    value = TraceFormatter.FormatUniversalTime(eventCache);
                    break;

                case "LOCALDATETIME":
                    value = TraceFormatter.FormatLocalTime(eventCache);
                    break;

                case "MACHINENAME":
                    value = Environment.MachineName;
                    break;

                case "PROCESSID":
                    value = traceFormatter.FormatProcessId(eventCache);
                    break;

                case "PROCESSNAME":
                    value = traceFormatter.FormatProcessName();
                    break;

                case "USER":
                    value = Environment.UserDomainName + "-" + Environment.UserName;
                    break;

                default:
                    value = "{" + name + "}";
                    return(true);
                }
                return(true);
            });

            return(result);
        }