gpt4 book ai didi

c# - 企业库日志记录 : Custom trace listener which sends messages to arbitrary WCF endpoint

转载 作者:太空狗 更新时间:2023-10-29 23:53:34 25 4
gpt4 key购买 nike

我正在尝试为企业库日志记录编写一个自定义跟踪监听器,它将所有日志消息发送到任意 WCF 端点。这背后的想法是我可以在另一端设置一个简单的控制台应用程序等,实时打印出所有日志消息。

我的问题分为两部分:

  1. 是否已经有执行此操作的机制?我已经看过 MSMQ 监听器,但我对使用它不感兴趣,因为我可能需要在某些时候使用不同的协议(protocol)/绑定(bind)。
  2. 我在下面实现它的方式 - 它是否足够有效或者是否有更好的方法?我担心的是,每次从 Logger 传来一条消息(这可能很频繁)时,我都会打开一个新 channel ,然后猛然关闭它。这会导致性能问题吗?

在我的样本中 RemoteClient源自 ClientBase<T> .

[ConfigurationElementType(typeof(CustomTraceListenerData))]
public class RemoteTraceListener : CustomTraceListener
{
public override void Write(string message)
{
RemoteClient client = new RemoteClient();
client.Open();
client.Write(message);
client.Close();
}

public override void WriteLine(string message)
{
RemoteClient client = new RemoteClient();
client.Open();
client.WriteLine(message);
client.Close();
}

public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data)
{
if (data is LogEntry && this.Formatter != null)
{
WriteLine(this.Formatter.Format(data as LogEntry));
}
else
{
WriteLine(data.ToString());
}
}
}

最佳答案

这篇文章多久写一次?我建议将 WCF 流式传输作为频繁记录的更好替代方案。

否则,尽可能长时间地保留客户端实例可能是个好主意。您可以尝试合并它。

关于c# - 企业库日志记录 : Custom trace listener which sends messages to arbitrary WCF endpoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7045028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com