Logging integration into the host
When using NServiceBus 10.2 or later with the .NET Generic Host, configure NLog directly on the host builder. The bridge package is not required:
var builder = Host.CreateApplicationBuilder();
builder.Logging.AddNLog();
builder.Services.AddNServiceBusEndpoint(endpointConfiguration);
For more information, see Hosting with Microsoft.Extensions.Hosting.
Usage
var config = new LoggingConfiguration();
var consoleTarget = new ColoredConsoleTarget
{
Layout = "${level}|${logger}|${message}${onexception:${newline}${exception:format=tostring}}"
};
config.AddTarget("console", consoleTarget);
config.LoggingRules.Add(new LoggingRule("*", LogLevel.Debug, consoleTarget));
LogManager.Configuration = config;
NServiceBus.Logging.LogManager.UseFactory(new ExtensionsLoggerFactory(new NLogLoggerFactory()));
Filtering
NServiceBus can write a significant amount of information to the log. To limit this information use the filtering features of the underlying logging framework.
For example to limit log output to a specific namespace.
Here is a code configuration example for adding a Rule.
var config = new LoggingConfiguration();
var target = new ColoredConsoleTarget();
config.AddTarget("console", target);
config.LoggingRules.Add(new LoggingRule("MyNamespace.*", LogLevel.Debug, target));
LogManager.Configuration = config;
NServiceBus.Logging.LogManager.UseFactory(new ExtensionsLoggerFactory(new NLogLoggerFactory()));