C# 使用NLog从Hangfire计划的后台作业进行日志记录
因此,我的问题如下:我计划使用Hangfire的方法/函数使用NLog执行大量相关信息的日志记录。当在没有hangfire的情况下运行该方法时,我得到了我想要的所有日志信息,但是当我使用hangfire调度该方法时,所有这些日志记录都丢失了 我知道Hangfire使用NLog(或您喜欢的任何其他日志框架)进行自己的日志记录。我正在使用ASP.NET MVC4 Web应用程序中的Hangfire。我正在使用Ninject并使用OWIN启动类设置hangfire,该类当前看起来如下:C# 使用NLog从Hangfire计划的后台作业进行日志记录,c#,.net,nlog,hangfire,C#,.net,Nlog,Hangfire,因此,我的问题如下:我计划使用Hangfire的方法/函数使用NLog执行大量相关信息的日志记录。当在没有hangfire的情况下运行该方法时,我得到了我想要的所有日志信息,但是当我使用hangfire调度该方法时,所有这些日志记录都丢失了 我知道Hangfire使用NLog(或您喜欢的任何其他日志框架)进行自己的日志记录。我正在使用ASP.NET MVC4 Web应用程序中的Hangfire。我正在使用Ninject并使用OWIN启动类设置hangfire,该类当前看起来如下: public
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseHangfire(config =>
{
var kernel = new StandardKernel(new MyModule());
config.UseNinjectActivator(kernel);
config.UseSqlServerStorage("Context");
LogProvider.SetCurrentLogProvider(new NLogLogProvider());
config.UseServer();
});
}
}
我想做的是,Hangfire可以自己做日志记录,而我的计划工作也可以完成所有日志记录,我不关心它是否在一个或多个文件中。目前,Hangfire正在正确记录日志,即:
2015-02-25 14:32:41.4400|TRACE|Hangfire.Server.AutomaticRetryServerComponentWrapper|Sending start request for server component 'Server Bootstrapper'...
等等
但是,计划作业的日志记录却不见踪影
我想问的是:如何从计划的方法/作业进行日志记录?我的猜测是,我遗漏了某个地方的依赖性/上下文,但我真的没有atm的线索。可能NLog在运行Hangfire作业时找不到它的配置 解决办法是:
LogManager.Configuration=新的XmlLoggingConfiguration(“c:/dir/nlog.config”);
var config=new LoggingConfiguration();
config.addRuleForAllLevel(新文件目标()
{
FileName=“c:/temp/my logfile.log”
});
LogManager.Configuration=config//应用配置
//设置内部日志级别
InternalLogger.LogLevel=LogLevel.Trace;
//启用文件的内部日志记录
InternalLogger.LogFile=“c:\\temp\\nlog internal.log”;
请参见您是否能够识别问题?@Nediarph如果NLog配置文件中没有任何筛选器,则它应该可以为您完成这项工作。您不需要为Hangfire设置当前的日志提供程序,因为我相信它会根据您的web.config设置自动读取相同的日志。此外,在hangfire操作期间执行日志行时会发生什么情况?