C# 如何使用Azure函数注入NLog
我有以下代码注入NLog记录器:C# 如何使用Azure函数注入NLog,c#,.net,.net-core,dependency-injection,nlog,C#,.net,.net Core,Dependency Injection,Nlog,我有以下代码注入NLog记录器: // startup.cs [assembly: FunctionsStartup(typeof(MyApp.FunctionApp.Startup))] namespace MyApp.FunctionApp { public class Startup : FunctionsStartup { public override void Configure(IFunctionsHostBuilder builder) {
// startup.cs
[assembly: FunctionsStartup(typeof(MyApp.FunctionApp.Startup))]
namespace MyApp.FunctionApp {
public class Startup : FunctionsStartup {
public override void Configure(IFunctionsHostBuilder builder) {
var nLogConfigPath = GetLogPath("nlog.config");
builder.Services.AddLogging(loggingBuilder =>
{
var nLogOptions = new NLogAspNetCoreOptions
{
RegisterHttpContextAccessor = true,
IgnoreEmptyEventId = true,
IncludeScopes = true,
ShutdownOnDispose = true
};
var logFactory = NLogBuilder.ConfigureNLog(nLogConfigPath);
logFactory.AutoShutdown = false;
var nLogConfig = logFactory.Configuration;
loggingBuilder.AddNLog(nLogConfig, nLogOptions);
});
}
}
}
// actual function code
public class ActualFunctionClass {
public ActualFunctionClass (ILogger<ActualFunctionClass> logger) {
logger.LogInformation("log stuff");
}
}
我认为这是错误的:
<logger name="locations-dataload-local*" ...
并添加到布局${logger}
,例如
layout="${logger}|${commonLayout}"
名称过滤器将与记录器名称
${logger)
。因此,如果记录器名称为YourNamespace.ActualFunctionClass
,则locations dataload local*
将与之不匹配。什么不起作用?@Julian ActualFunctionClass构造函数中的记录器没有记录任何内容。我猜它没有被告知要登录的目标。但我不确定如何指定请在DI设置中设置目标。请共享您的nlog配置。问题可能在于.net core/asp.net core版本是什么?另请参阅:
<logger name="*" minlevel="Trace" writeTo="locations-dataload-ai,locations-dataload-file" />
layout="${logger}|${commonLayout}"