NServicebus与NLog

问题描述

我试图弄清楚如何配置已经与NLog一起使用的asp.net核心应用程序,以便NServiceBus将其用于内部日志记录。当前的NLog配置可以完美运行。

NServiceBus涉及到此,但是我没有发现有帮助。

https://docs.particular.net/samples/logging/extensions-logging/

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args)
    {

        return Host.CreateDefaultBuilder(args)
            .UseNServiceBus(hostBuilderContext =>
            {
                var endpointConfiguration = new EndpointConfiguration("MySite");
                endpointConfiguration.EnableInstallers();
                var transport = endpointConfiguration.UseTransport<AzureServiceBusTransport>();
                transport.ConnectionString(
                    "");

                var persistence =
                    endpointConfiguration.UsePersistence<AzureStoragePersistence,StorageType.Sagas>();
                persistence.ConnectionString(
                    "");
                persistence.CreateSchema(true);

                //endpointConfiguration.SendOnly();
                endpointConfiguration.EnableuniformSession();
                persistence.AssumeSecondaryIndicesExist();
                return endpointConfiguration;
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.ConfigureLogging(x =>
                {
                    x.ClearProviders();
                    x.SetMinimumLevel(LogLevel.Trace);
                });
                webBuilder.UseStartup<Startup>();
                webBuilder.UseNLog();
            });
    }
    }

解决方法

升级到NServiceBus.Extensions.Hosting 1.1.0,为Microsoft.Extensions.Logging带来内置支持。只要在UseNServiceBus之前配置了日志记录(顺序对于通用主机很重要)

,

如果执行此操作会发生什么:

return Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup<Startup>())
    .ConfigureLogging(x =>
    {
        x.ClearProviders();
        x.SetMinimumLevel(LogLevel.Trace);
    })
    .UseNServiceBus(hostBuilderContext =>
        {
            var endpointConfiguration = new EndpointConfiguration("MySite");
            endpointConfiguration.EnableInstallers();
            var transport = endpointConfiguration.UseTransport<AzureServiceBusTransport>();
            transport.ConnectionString(
                "");

            var persistence =
                endpointConfiguration.UsePersistence<AzureStoragePersistence,StorageType.Sagas>();
            persistence.ConnectionString(
                "");
            persistence.CreateSchema(true);

            //endpointConfiguration.SendOnly();
            endpointConfiguration.EnableUniformSession();
            persistence.AssumeSecondaryIndicesExist();
            return endpointConfiguration;
        })
    .UseNLog();

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...