mirror of
https://github.com/ckaczor/Common.git
synced 2026-02-16 10:58:34 -05:00
Initial commit
This commit is contained in:
70
Trace/BeginEndTracer.cs
Normal file
70
Trace/BeginEndTracer.cs
Normal file
@@ -0,0 +1,70 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
|
||||
namespace Common.Debug
|
||||
{
|
||||
public class BeginEndTracer : IDisposable
|
||||
{
|
||||
private string _sourceClass;
|
||||
private string _sourceMethod;
|
||||
|
||||
private object _endParameter;
|
||||
private bool _endParameterSet;
|
||||
|
||||
private const string EnterPattern = "Enter: {0} - {1}";
|
||||
private const string ExitPattern = "Exit: {0} - {1}";
|
||||
|
||||
private const string EnterPatternWithParameter = "Enter: {0} - {1} - {2}";
|
||||
private const string ExitPatternWithParameter = "Exit: {0} - {1} - {2}";
|
||||
|
||||
public BeginEndTracer(string sourceClass, [CallerMemberName] string sourceMethod = null, object beginParameter = null)
|
||||
{
|
||||
_sourceClass = sourceClass;
|
||||
_sourceMethod = sourceMethod;
|
||||
|
||||
if (beginParameter == null)
|
||||
Tracer.WriteLine(string.Format(EnterPattern, _sourceClass, _sourceMethod));
|
||||
else
|
||||
Tracer.WriteLine(string.Format(EnterPatternWithParameter, _sourceClass, _sourceMethod, beginParameter));
|
||||
}
|
||||
|
||||
public BeginEndTracer(string sourceClass, [CallerMemberName] string sourceMethod = null, params object[] beginParameters)
|
||||
{
|
||||
_sourceClass = sourceClass;
|
||||
_sourceMethod = sourceMethod;
|
||||
|
||||
if (beginParameters == null || beginParameters.Length == 0)
|
||||
Tracer.WriteLine(string.Format(EnterPattern, _sourceClass, _sourceMethod));
|
||||
else if (beginParameters.Length == 1)
|
||||
Tracer.WriteLine(string.Format(EnterPatternWithParameter, _sourceClass, _sourceMethod, beginParameters[0]));
|
||||
else
|
||||
{
|
||||
string[] beginStrings = new string[beginParameters.Length];
|
||||
|
||||
for (int i = 0; i < beginParameters.Length; i++)
|
||||
beginStrings[i] = beginParameters[i].ToString();
|
||||
|
||||
Tracer.WriteLine(string.Format(EnterPatternWithParameter, _sourceClass, _sourceMethod, string.Join(", ", beginStrings)));
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (_endParameterSet)
|
||||
Tracer.WriteLine(string.Format(ExitPatternWithParameter, _sourceClass, _sourceMethod, _endParameter));
|
||||
else
|
||||
Tracer.WriteLine(string.Format(ExitPattern, _sourceClass, _sourceMethod));
|
||||
}
|
||||
|
||||
public void SetEndParameter(object parameter)
|
||||
{
|
||||
_endParameter = parameter;
|
||||
|
||||
_endParameterSet = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user