【发布时间】:2017-09-11 20:35:16
【问题描述】:
刚开始使用 Serilog + ElasticSearch,想知道是否有一种优雅的方法可以在一个日志条目中记录 params 对象数组。到目前为止,我能够管理它的唯一方法是循环遍历每个 params,它为每个创建一个单独的日志条目。有什么方法可以将它们组合成一个日志条目?
谢谢!
示例:
public static void MethodEntry<T>(string methodName, params object[] parameters)
{
if (parameters.Length > 0)
foreach (var param in parameters) // Will create parameters.Length number of log entries
Log.ForContext(typeof(T)).Debug("Entering {MethodName} with {@Param}", methodName, param);
else
Log.ForContext(typeof(T)).Debug("Entering {MethodName}", methodName);
}
编辑:
使用的水槽:
- Serilog
- Serilog.Sinks.Elasticsearch(包括文件、PeriodicBatching 和 RollingFile 接收器)
- Environment 和 ThreadId 等耦合丰富器
【问题讨论】:
-
您是否尝试过将参数传递到日志?类似于以下内容:
Log.ForContext(typeof(T)).Debug("Entering {MethodName} with {@Parameters}", methodName, parameters);? -
@SamvelPetrosov 我确实尝试过,但它导致内存使用量激增,直到崩溃并且没有写入日志条目。
-
你传递了多少个参数?
-
@SamvelPetrosov 在崩溃的情况下是 2(这是一个事件,所以
object sender和EventArgs e) -
您使用哪些水槽?请添加 Serilog 的初始配置
标签: c# elasticsearch parameters optional-parameters serilog