我正在尝试为 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>();
}
}