如何使用Rebus.Logging.ILog

时间:2019-05-30 22:28:50

标签: rebus rebus-azureservicebus

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

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

Rebus.Logging.ILog

  .Options(o =>
    {
    o.Decorate<IErrorHandler>(c => 
       new ErrorMessageHandler(c.Get<IErrorHandler>(), c.Get<ILog>()));

1 个答案:

答案 0 :(得分:0)

这肯定是可能的,但是由于Rebus的记录器是用一种类型创建的(该类型用作各种上下文-我认为Serilog称其为“源上下文”),因此您无需注入记录器,而是注入了记录器工厂:

ErrorMessageHandler

,然后在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 } } 的构造函数中,您可以获取记录器:

reinterpret_cast<std::vector<double>>(std::string("Hello"));