基于.Net Core的API框架的搭建(4)

6、加入日志功能

日志我们选用log4net,首先引入程序包:

 

 选择2.0.8版本安装。然后在项目根目录新增log4net的配置文件log4net.config

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <!-- This section contains the log4net configuration settings -->

  <log4net>

    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">

      <layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" />

    </appender>

    <appender name="FileAppender" type="log4net.Appender.FileAppender">

      <file value="log-file.log" />

      <appendToFile value="true" />

      <layout type="log4net.Layout.PatternLayout">

        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />

      </layout>

    </appender>

    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">

      <file value="Logs/" />

      <appendToFile value="true" />

      <rollingStyle value="Composite" />

      <staticLogFileName value="false" />

      <datePattern value="yyyyMMdd'.log'" />

      <maxSizeRollBackups value="10" />

      <maximumFileSize value="100MB" />

      <layout type="log4net.Layout.PatternLayout">

        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />

      </layout>

    </appender>

    <!-- Setup the root category, add the appenders and set the default level -->

    <root>

      <level value="ALL" />

      <appender-ref ref="ConsoleAppender" />

      <appender-ref ref="FileAppender" />

      <appender-ref ref="RollingLogFileAppender" />

    </root>

  </log4net>

</configuration>

然后打开Startup.cs,修改如下代码:

 

public static ILoggerRepository repository { get; set; }

        public IConfiguration Configuration { get; }

        public Startup(IConfiguration configuration)

        {

            Configuration = configuration;

            repository = LogManager.CreateRepository("NETCoreRepository");

            XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));

        }

然后修改BaseController.cs

 

public ILog log = LogManager.GetLogger(Startup.repository.Name, typeof(BaseController));

这样我们就可以在所有继承BaseController的控制器中使用日志了,我们先在测试控制器中写下日志测试一下:

 

运行测试,访问test控制器:

 

查看Logs目录已经多了一个日志文件:

 

打开看下内容:

 

  

类似,我们可以在其他控制器需要的地方加上日志,以便将来程序出错找Bug,先给MemberController.cs加上日志吧:

 

 

  

7、加入定时任务

有时候我们希望项目能定时的执行一些任务,在这里我们使用了由.NET Core社区大神兼前微软MVP AmamiyaYuuko (入职微软之后就卸任MVP)开发维护的TimeJob程序包:

 

  

引入程序包后,修改Startup.cs中两处:

 

  

我们在Jobs目录下新增一个类TestJob.cs

 

  

我们修改此类继承自Job,然后修改代码:

 

using log4net;

using Pomelo.AspNetCore.TimedJob;

using System;

namespace ChainStoreAPI.Jobs

{

    public class TestJob : Job

    {

        public ILog log = LogManager.GetLogger(Startup.repository.Name, typeof(TestJob));

        [Invoke(Begin = "2019-05-29 00:00", Interval = 1000 * 10, SkipWhileExecuting = true)]

        public void Run()

        {

            log.Debug(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffff"));

        }

    }

}

设置此定时任务每10秒打印一次日志。运行一下,查看日志是否打印:

 

猜你喜欢

转载自www.cnblogs.com/yzqnet/p/10947407.html