[英]Serilog TcpSink Not throwing exceptions
有什么方法可以跟踪端点是否可用于 Tcp 接收器日志记录? 例如,在我的机器上本地我没有 FileBeat 设置,而它在 Staging 机器上工作。
我初始化 Logger 的方式
private readonly ILogger _tcpLogger;
public TcpClient(IOptions<ElasticSearchConfig> tcpClientConfig)
{
var ip = IPAddress.Parse(tcpClientConfig.Value.TcpClientConfig.IpAddress);
_tcpLogger = new LoggerConfiguration()
.WriteTo.TCPSink(ip, tcpClientConfig.Value.TcpClientConfig.Port, new TcpOutputFormatter())
.CreateLogger();
}
和简单的方法只是提交日志
public void SubmitLog(string json)
{
_tcpLogger.Information(json);
}
就我而言,当它在本地提交 json 字符串时,它无处可去,我想得到一个例外/消息。
理想情况下在 json 上提交,但在初始化期间是可以的。
写入 Serilog 记录器是一种安全操作,绝不会抛出异常,这是设计使然。 因此,发送这些消息时发生的任何异常只会出现在SelfLog
中 - 如果您启用它。
例如
// Write Serilog errors to the Console
Serilog.Debugging.SelfLog.Enable(msg => Console.WriteLine(msg));
当然,上面的示例只是为了说明SelfLog
功能...您将选择在何处/如何显示或存储这些错误消息。
现在,如果您正在记录的操作非常重要,以至于您希望保证它成功(或者如果没有成功则抛出异常),那么您应该使用Audit Logging ,即使用.AuditTo.TCPSink(...)
代替.WriteTo.TCPSink(...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.