Hangfire 没有登录到 NLog
Posted
技术标签:
【中文标题】Hangfire 没有登录到 NLog【英文标题】:Hangfire not logging to NLog 【发布时间】:2020-08-03 12:20:19 【问题描述】:我在这里创建了一个独立的问题复制品:https://github.com/GuerrillaCoder/HangfireLoggingTest
使用的版本:
<ItemGroup>
<PackageReference Include="Hangfire.AspNetCore" Version="1.7.12" />
<PackageReference Include="Hangfire.Console" Version="1.4.2" />
<PackageReference Include="Hangfire.Core" Version="1.7.12" />
<PackageReference Include="Hangfire.MemoryStorage.Core" Version="1.4.0" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.9.3" />
</ItemGroup>
问题:
Hangfire 从不向日志写入任何内容,这使得调试任务停滞或失败的问题变得非常困难。
我相信我已正确遵循说明并将 LogLevel 设置为 Trace,但除了直接向 Nlog 记录器发送消息外,没有任何内容写入日志。
重现步骤
-
git 克隆https://github.com/GuerrillaCoder/HangfireLoggingTest
运行项目(观察日志是在 LogOutput 文件夹中创建的,并且写入的消息显示 NLog 正在运行)
导航到 /hangfire 并手动触发任务
观察hangfire根本没有写任何日志消息
【问题讨论】:
记得在项目中配置NLog.config
,所以Copy to Output Directory
等于Copy if newer
。另见github.com/NLog/NLog/wiki/Logging-troubleshooting
已经设置好了。 Nlog 工作正常,hangfire 没有记录到它。
但是您的示例项目没有配置这个。想在 github 上更新它吗?
也许你可以尝试在你的program.cs中声明Nlog,像这样:github.com/NLog/NLog/wiki/…
【参考方案1】:
尝试像这样更新ConfigureServices
:
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
// Register NLog as LoggingProvider for Microsoft ILogger
services.AddLogging(builder =>
loggingBuilder.ClearProviders();
loggingBuilder.AddNLog();
);
services.AddControllersWithViews();
// Only needed for NetFramework with LibLog. NetCore uses Microsoft ILogger
// GlobalConfiguration.Configuration.UseNLogLogProvider();
services.AddHangfire((isp, config) =>
config.UseMemoryStorage();
config.UseConsole(); // https://www.nuget.org/packages/Hangfire.Console/
);
另请参阅:https://docs.hangfire.io/en/latest/configuration/configuring-logging.html
【讨论】:
以上是关于Hangfire 没有登录到 NLog的主要内容,如果未能解决你的问题,请参考以下文章