在 Hangfire 失败的任务上显示异常
Show exception on Hangfire Failed tasks
我正在测试 Hangfire 以便在我的应用程序中使用它
任务 运行 符合预期
现在我使用 try catch 阻止任务失败,异常未显示在仪表板中的失败任务中
然后我使用 log4net 它工作正常将异常记录到文本文件但在 hangfire 仪表板中仍然不可见问题是什么
框架 4.7 - WebForms - log4net:2.0.13.0,hangfire.core:1.1.1.0
安装者:安装包 Hangfire_net40
代码
1- Startup.cs
public void Configuration(IAppBuilder app)
{
app.UseHangfire(config =>
{
config.UseSqlServerStorage("Hangfire_Blog");
config.UseServer();
});
}
2- web.Config
3- Global.ascx
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
private BackgroundJobServer _backgroundJobServer;
protected void Application_Start(object sender, EventArgs e)
{
log4net.Config.XmlConfigurator.Configure();
JobStorage.Current = new SqlServerStorage("Hangfire_Blog");
using (var connection = JobStorage.Current.GetConnection())
{
foreach (var recurringJob in connection.GetRecurringJobs())
{
RecurringJob.RemoveIfExists(recurringJob.Id);
}
}
//create an instance of BackgroundJobServer
_backgroundJobServer = new BackgroundJobServer();
//add your recurring job
RecurringJob.AddOrUpdate(() => Code(), "*/2 * * * *");
// RecurringJob. AddOrUpdate(() => Actualizacoes(), Cron.m();
}
[AutomaticRetry(Attempts = 10)]
public void Code()
{
try
{
string s = "";
int n = int.Parse(s);
}
catch (Exception ex)
{
log.Error(ex.Message);
}
}
对于面临同样问题的任何人@madreflection 评论是答案的一部分
首先 Hangfire 不会在 try catch 块中捕获异常,要么删除 try catch
或者在捕获日志中将错误抛出以被 hangfire
捕获
但最重要
[AutomaticRetry(Attempts = 10)]
那个标签意味着 hangfire 不会认为任务失败,直到它尝试执行 10 次并且所有 10 次都失败
希望有人觉得它有用
谢谢
我正在测试 Hangfire 以便在我的应用程序中使用它
任务 运行 符合预期
现在我使用 try catch 阻止任务失败,异常未显示在仪表板中的失败任务中
然后我使用 log4net 它工作正常将异常记录到文本文件但在 hangfire 仪表板中仍然不可见问题是什么
框架 4.7 - WebForms - log4net:2.0.13.0,hangfire.core:1.1.1.0
安装者:安装包 Hangfire_net40
代码
1- Startup.cs
public void Configuration(IAppBuilder app)
{
app.UseHangfire(config =>
{
config.UseSqlServerStorage("Hangfire_Blog");
config.UseServer();
});
}
2- web.Config
3- Global.ascx
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
private BackgroundJobServer _backgroundJobServer;
protected void Application_Start(object sender, EventArgs e)
{
log4net.Config.XmlConfigurator.Configure();
JobStorage.Current = new SqlServerStorage("Hangfire_Blog");
using (var connection = JobStorage.Current.GetConnection())
{
foreach (var recurringJob in connection.GetRecurringJobs())
{
RecurringJob.RemoveIfExists(recurringJob.Id);
}
}
//create an instance of BackgroundJobServer
_backgroundJobServer = new BackgroundJobServer();
//add your recurring job
RecurringJob.AddOrUpdate(() => Code(), "*/2 * * * *");
// RecurringJob. AddOrUpdate(() => Actualizacoes(), Cron.m();
}
[AutomaticRetry(Attempts = 10)]
public void Code()
{
try
{
string s = "";
int n = int.Parse(s);
}
catch (Exception ex)
{
log.Error(ex.Message);
}
}
对于面临同样问题的任何人@madreflection 评论是答案的一部分
首先 Hangfire 不会在 try catch 块中捕获异常,要么删除 try catch
或者在捕获日志中将错误抛出以被 hangfire
捕获
但最重要
[AutomaticRetry(Attempts = 10)]
那个标签意味着 hangfire 不会认为任务失败,直到它尝试执行 10 次并且所有 10 次都失败
希望有人觉得它有用
谢谢