首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Rebus.Logging.ILog

如何使用Rebus.Logging.ILog
EN

Stack Overflow用户
提问于 2019-05-30 22:28:49
回答 1查看 368关注 0票数 0

下面的ILog是否可以与Azure函数、日志记录或Serilog等一起使用?

我找不到关于如何使用它的代码示例。

Rebus.Logging.ILog

代码语言:javascript
复制
  .Options(o =>
    {
    o.Decorate<IErrorHandler>(c => 
       new ErrorMessageHandler(c.Get<IErrorHandler>(), c.Get<ILog>()));
EN

回答 1

Stack Overflow用户

发布于 2019-05-31 11:09:15

这当然是可能的--但由于Rebus的记录器是用类型创建的(该类型作为上下文进行排序--我认为Serilog将其称为“源上下文”),所以不注入记录器,而是注入记录器工厂:

代码语言:javascript
复制
.Options(o =>
{
    o.Decorate<IErrorHandler>(c => {
        var errorHandler = c.Get<IErrorHandler>();
        var loggerFactory = c.Get<IRebusLoggerFactory>();
        return new ErrorMessageHandler(errorHandler, loggerFactory));
    });
}

然后,在ErrorMessageHandler的构造函数中,您可以获得记录器:

代码语言:javascript
复制
public class ErrorMessageHandler : IErrorHandler
{
    readonly IErrorHandler errorHandler;
    readonly ILog log;

    public ErrorMessageHandler(IErrorHandler errorHandler, IRebusLoggerFactory loggerFactory)
    {
        this.errorHandler = errorHandler;
        log = loggerFactory.GetLogger<ErrorMessageHandler>();
    }

    public async Task HandlePoisonMessage(TransportMessage transportMessage, ITransactionContext transactionContext, Exception exception)
    {
        // do stuff in here
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56386410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档