【发布时间】:2017-01-22 18:41:16
【问题描述】:
此问题与Steven 的答案-here 有关。他提出了一个非常好的记录器包装器。我将他的代码粘贴在下面:
public interface ILogger
{
void Log(LogEntry entry);
}
public static class LoggerExtensions
{
public static void Log(this ILogger logger, string message)
{
logger.Log(new LogEntry(LoggingEventType.Information,
message, null));
}
public static void Log(this ILogger logger, Exception exception)
{
logger.Log(new LogEntry(LoggingEventType.Error,
exception.Message, exception));
}
// More methods here.
}
那么,我的问题是创建代理到 Serilog 的实现的正确方法是什么?
注意:此问题与 this question about log4net 有关,但现在特定于 Serilog。
【问题讨论】:
-
你为什么提到你自己? :D 这是一个循环引用
-
@Sherlock 因为这只是关于 log4net 的相同问题(由其他人提出)的副本。我只需要公开记录这些信息,stackoverflow 对此非常有用。
-
注意,传递
exception.Message是因为消息对于 Serilog 来说是次优的;相反,如果您必须处理没有自己消息的事件,请使用常量message template,如{ExceptionMessage},并使用exception.Message对其进行参数化。这避免了尝试将消息解析为模板,并且不会污染内部消息模板缓存。干杯! -
嗨尼克,请随时更新我的答案或添加您自己的答案。