Logger
Provides internal logging to the NUnit framework
using System;
using System.IO;
using System.Runtime.CompilerServices;
using System.Threading;
namespace NUnit.Framework.Internal
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
public class Logger : ILogger
{
private static readonly string TIME_FMT = "HH:mm:ss.fff";
private static readonly string TRACE_FMT = "{0} {1,-5} [{2,2}] {3}: {4}";
private readonly string _name;
private readonly string _fullname;
private readonly InternalTraceLevel _maxLevel;
[System.Runtime.CompilerServices.Nullable(2)]
private readonly TextWriter _writer;
public Logger(string name, InternalTraceLevel level, [System.Runtime.CompilerServices.Nullable(2)] TextWriter writer)
{
_maxLevel = level;
_writer = writer;
_fullname = (_name = name);
int num = _fullname.LastIndexOf('.');
if (num >= 0)
_name = _fullname.Substring(num + 1);
}
public void Error(string message)
{
Log(InternalTraceLevel.Error, message);
}
public void Error(string message, params object[] args)
{
Log(InternalTraceLevel.Error, message, args);
}
public void Warning(string message)
{
Log(InternalTraceLevel.Warning, message);
}
public void Warning(string message, params object[] args)
{
Log(InternalTraceLevel.Warning, message, args);
}
public void Info(string message)
{
Log(InternalTraceLevel.Info, message);
}
public void Info(string message, params object[] args)
{
Log(InternalTraceLevel.Info, message, args);
}
public void Debug(string message)
{
Log(InternalTraceLevel.Debug, message);
}
public void Debug(string message, params object[] args)
{
Log(InternalTraceLevel.Debug, message, args);
}
private void Log(InternalTraceLevel level, string message)
{
if (_maxLevel >= level)
WriteLog(level, message);
}
private void Log(InternalTraceLevel level, string format, params object[] args)
{
if (_maxLevel >= level)
WriteLog(level, string.Format(format, args));
}
private void WriteLog(InternalTraceLevel level, string message)
{
_writer?.WriteLine(TRACE_FMT, DateTime.Now.ToString(TIME_FMT), (level == InternalTraceLevel.Debug) ? "Debug" : level.ToString(), Thread.CurrentThread.ManagedThreadId, _name, message);
}
}
}