e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
100 lines
3.3 KiB
C#
100 lines
3.3 KiB
C#
namespace System.Workflow.Runtime
|
|
{
|
|
using System;
|
|
using System.Diagnostics;
|
|
|
|
/// <summary>
|
|
/// Holds trace sources for the runtime and associated modules
|
|
/// </summary>
|
|
internal static class WorkflowTrace
|
|
{
|
|
static TraceSource runtime;
|
|
static TraceSource tracking;
|
|
static TraceSource host;
|
|
|
|
/// <summary>
|
|
/// Tracesource for the core runtime
|
|
/// </summary>
|
|
internal static TraceSource Runtime
|
|
{
|
|
get { return runtime; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tracesource for tracking
|
|
/// </summary>
|
|
internal static TraceSource Tracking
|
|
{
|
|
get { return tracking; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tracesource for the host
|
|
/// </summary>
|
|
internal static TraceSource Host
|
|
{
|
|
get { return host; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Statically set up trace sources
|
|
///
|
|
/// To enable logging to a file, add lines like the following to your app config file.
|
|
/*
|
|
<system.diagnostics>
|
|
<switches>
|
|
<add name="System.Workflow LogToFile" value="1" />
|
|
</switches>
|
|
</system.diagnostics>
|
|
*/
|
|
/// To enable tracing to default trace listeners, add lines like the following
|
|
/*
|
|
<system.diagnostics>
|
|
<switches>
|
|
<add name="System.Workflow LogToTraceListener" value="1" />
|
|
</switches>
|
|
</system.diagnostics>
|
|
*/
|
|
/// </summary>
|
|
static WorkflowTrace()
|
|
{
|
|
runtime = new TraceSource("System.Workflow.Runtime");
|
|
runtime.Switch = new SourceSwitch("System.Workflow.Runtime", SourceLevels.Off.ToString());
|
|
// we'll use ID of 1 for the scheduler, 0 for rest of runtime
|
|
|
|
tracking = new TraceSource("System.Workflow.Runtime.Tracking");
|
|
tracking.Switch = new SourceSwitch("System.Workflow.Runtime.Tracking", SourceLevels.Off.ToString());
|
|
|
|
host = new TraceSource("System.Workflow.Runtime.Hosting");
|
|
host.Switch = new SourceSwitch("System.Workflow.Runtime.Hosting", SourceLevels.Off.ToString());
|
|
|
|
|
|
|
|
BooleanSwitch logToFile = new BooleanSwitch("System.Workflow LogToFile", "Log traces to file");
|
|
if (logToFile.Enabled)
|
|
{
|
|
TextWriterTraceListener fileLog = new TextWriterTraceListener("WorkflowTrace.log");
|
|
// add to global Listeners list
|
|
Trace.Listeners.Add(fileLog);
|
|
// don't add to tracking (which probably has its own log)
|
|
runtime.Listeners.Add(fileLog);
|
|
host.Listeners.Add(fileLog);
|
|
}
|
|
|
|
BooleanSwitch traceToDefault = new BooleanSwitch("System.Workflow LogToTraceListeners", "Trace to listeners in Trace.Listeners", "0");
|
|
if (traceToDefault.Enabled)
|
|
{
|
|
foreach (TraceListener listener in Trace.Listeners)
|
|
{
|
|
if (!(listener is DefaultTraceListener))
|
|
{
|
|
runtime.Listeners.Add(listener);
|
|
tracking.Listeners.Add(listener);
|
|
host.Listeners.Add(listener);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|