У меня есть цель NLog, которую я написал, которая предназначена для использования NLog LogEventInfo и записи ее в службы API Azure. У меня возникли проблемы с написанием модульного теста для регистратора, потому что я не могу понять, как перехватить сообщение, записываемое в APIServices.Log.Trace.Единичный тест пользовательский NLog target
Вот цель определение:
namespace Ariel.Mobile.Logging
{
using System.Collections;
using System.Collections.Generic;
using System.Web.Http;
using System.Web.Http.Tracing;
using Ariel.Library;
using Microsoft.WindowsAzure.Mobile.Service;
using Ninject;
using NLog;
using NLog.Targets;
/// <summary>
/// Class to be used with NLog to write error and debug data to Azure for storage.
/// </summary>
[Target("Azure")]
public class AzureTarget : Target
{
#region Fields
/// <summary>
/// Defines the mappings between NLog and Azure levels.
/// </summary>
private static readonly IDictionary<LogLevel, TraceLevel> LevelMap =
new Dictionary<LogLevel, TraceLevel>
{
{ LogLevel.Trace, TraceLevel.Debug },
{ LogLevel.Debug, TraceLevel.Debug },
{ LogLevel.Info, TraceLevel.Info },
{ LogLevel.Warn, TraceLevel.Warn },
{ LogLevel.Error, TraceLevel.Error },
{ LogLevel.Fatal, TraceLevel.Fatal }
};
/// <summary>
/// Gets or sets the Azure service to which messages will be sent.
/// </summary>
private readonly ApiServices services;
#endregion
public AzureTarget()
{
services = new ApiServices(ServiceConfig.Config);
}
#region Methods
/// <summary>
/// Method accepting NLog logging events to be transmitted to Azure.
/// </summary>
/// <param name="logEvent">The NLog event which needs to be persisted.
/// </param>
protected override void Write(LogEventInfo logEvent)
{
this.services.Log.Trace(LevelMap[logEvent.Level], logEvent.Message, logEvent.Exception);
}
#endregion
}
}
Как я могу перехватить сообщение после входа в APIServices.Log.Trace в моем модульном тестировании?