Я пытаюсь написать цель для NLog отправлять сообщения подключенным клиентам с помощью SignalR.
Вот что у меня сейчас.Что мне интересно, так это , следует ли мне использовать разрешение ConnectionManager следующим образом -или- каким-то образом получить ссылку на концентратор (SignalrTargetHub) и вызвать SendMessageметод на это?
Есть ли какие-либо последствия для производительности?
[Target("Signalr")]
public class SignalrTarget:TargetWithLayout
{
public SignalR.IConnectionManager ConnectionManager { get; set; }
public SignalrTarget()
{
ConnectionManager = AspNetHost.DependencyResolver.Resolve<IConnectionManager>();
}
protected override void Write(NLog.LogEventInfo logEvent)
{
dynamic clients = GetClients();
var logEventObject = new
{
Message = this.Layout.Render(logEvent),
Level = logEvent.Level.Name,
TimeStamp = logEvent.TimeStamp.ToString("yyyy-MM-dd HH:mm:ss.fff")
};
clients.onLoggedEvent(logEventObject);
}
private dynamic GetClients()
{
return ConnectionManager.GetClients<SignalrTargetHub>();
}
}