.NET Core 2 NLog Core HangFire Core

ValuesController.cs 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using Microsoft.AspNetCore.Mvc;
  6. using Hangfire;
  7. using System.Net;
  8. using System.IO;
  9. using System.Text;
  10. using NLog;
  11. //using Microsoft.Extensions.Logging;
  12. namespace WebApplication1.Controllers
  13. {
  14. [Route("api/[controller]/[action]")]
  15. public class ValuesController : Controller
  16. {
  17. static Logger Logger = LogManager.GetCurrentClassLogger();
  18. #region 四个定时基础方法
  19. /// <summary>
  20. /// 基于队列的任务处理(Fire-and-forget jobs)
  21. /// </summary>
  22. /// <param name="str"></param>
  23. /// <returns></returns>
  24. public string Enqueue(string str)
  25. {
  26. var jobId = BackgroundJob.Enqueue(
  27. () => Console.WriteLine("Fire-and-forget!"));
  28. return $"基于队列的任务处理 Enqueue : jobId={jobId}";
  29. }
  30. /// <summary>
  31. /// 延迟任务执行(Delayed jobs)
  32. /// </summary>
  33. /// <returns></returns>
  34. public string Delayed()
  35. {
  36. var jobId = BackgroundJob.Schedule(
  37. () => Console.WriteLine("Delayed!"),
  38. TimeSpan.FromSeconds(10));
  39. return $"延迟任务执行 Delayed : jobId={jobId}";
  40. }
  41. /// <summary>
  42. /// 定时任务执行(Recurring jobs)
  43. /// </summary>
  44. /// <returns></returns>
  45. public string Recurring()
  46. {
  47. RecurringJob.AddOrUpdate(() => Console.Write("定时任务执行 Recurring "), "1/1 * * * *");
  48. return $"定时任务执行 Recurring ";
  49. }
  50. /// <summary>
  51. /// 延续性任务执行
  52. /// </summary>
  53. public string Continuations(string jobId)
  54. {
  55. BackgroundJob.ContinueWith(
  56. jobId, () => Console.WriteLine("Continuation!"));
  57. return $"延续性任务执行 Continuation ";
  58. }
  59. #endregion
  60. /// <summary>
  61. /// 定时任务执行导出
  62. /// </summary>
  63. /// <returns></returns>
  64. public string RecurringToExport()
  65. {
  66. RecurringJob.AddOrUpdate(() => HttpGetExport(), Cron.Minutely);
  67. return $"定时任务执行导出 api/Values/Export/ ";
  68. }
  69. private void HttpGetExport()
  70. {
  71. try
  72. {
  73. Logger.Info("定时任务执行【导出】【开始】 api/Values/Export/");
  74. HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:8082/api/Values/Export?start=2017-12-08&end=2017-12-09");
  75. request.Method = "GET";
  76. request.ContentType = "text/html;charset=UTF-8";
  77. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  78. Stream myResponseStream = response.GetResponseStream();
  79. StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
  80. var result = myStreamReader.ReadToEnd();
  81. myStreamReader.Close();
  82. myResponseStream.Close();
  83. if (result != "定时导出Excel文件,并保存Excel文件信息到数据库中")
  84. throw new Exception("导出错误");
  85. Logger.Info("定时任务执行【导出】【结束】 api/Values/Export/");
  86. }
  87. catch (Exception e)
  88. {
  89. Logger.Error(e, "定时任务执行【导出】【失败】 api/Values/Export/");
  90. }
  91. }
  92. public string Log()
  93. {
  94. Logger.Info("普通信息日志-----------");
  95. Logger.Debug("调试日志-----------");
  96. Logger.Error("错误日志-----------");
  97. Logger.Fatal("异常日志-----------");
  98. Logger.Warn("警告日志-----------");
  99. Logger.Trace("跟踪日志-----------");
  100. Logger.Log(NLog.LogLevel.Warn, "Log日志------------------");
  101. return "记录日志";
  102. }
  103. }
  104. }