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秒打印一次日志。运行一下,查看日志是否打印:

基于.Net Core的API框架的搭建(4)的更多相关文章

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

    目标 我们的目标是要搭建一个API控制器的项目,API控制器提供业务服务. 一.开发框架搭建 1.开发前准备 开发前,我们需要下载如下软件,安装过程略: (1) 开发工具:VS2017 (2) 数据库 ...

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

    4.加入数据库支持 下面我们为项目加入数据库支持,修改appsettings.json: 然后我们要生成实体类,打开VS工具->NuGet包管理器->程序包管理器控制台: 输入命令: Sc ...

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

    5.加入缓存支持 我们希望为项目增加缓存支持,我们选择Redis做为缓存数据库. 首先,我们在Services目录增加一个缓存接口类ICacheService: using System; using ...

  4. 基于.NET CORE微服务框架 -surging的介绍和简单示例 (开源)

    一.前言 至今为止编程开发已经11个年头,从 VB6.0,ASP时代到ASP.NET再到MVC, 从中见证了.NET技术发展,从无畏无知的懵懂少年,到现在的中年大叔,从中的酸甜苦辣也只有本人自知.随着 ...

  5. 基于.NET CORE微服务框架 -谈谈surging API网关

    1.前言 对于最近surging更新的API 网关大家也有所关注,也收到了不少反馈提出是否能介绍下Api网关,那么我们将在此篇文章中剥析下surging的Api 网关 开源地址:https://git ...

  6. 基于DotNet Core的RPC框架(一) DotBPE.RPC快速开始

    0x00 简介 DotBPE.RPC是一款基于dotnet core编写的RPC框架,而它的爸爸DotBPE,目标是实现一个开箱即用的微服务框架,但是它还差点意思,还仅仅在构思和尝试的阶段.但不管怎么 ...

  7. 基于.net core 2.0+mysql+AceAdmin搭建一套快速开发框架

    前言 .net core已经出来一段时间了,相信大家对.net core的概念已经很清楚了,这里就不再赘述.笔者目前也用.net core做过一些项目,并且将以前framework下的一些经验移植到了 ...

  8. Ocelot——初识基于.Net Core的API网关

    前言 前不久看到一篇<.NET Core 在腾讯财付通的企业级应用开发实践>,给现在研究.Net Core及想往微服务方向发展的人来了一剂强心针.于是我也就立刻去下Ocelot的源码及去阅 ...

  9. 一个轻量级的基于 .NET Core 的 ORM 框架 HSQL

    HSQL 是一种轻量级的基于 .NET Core 的数据库对象关系映射「ORM」框架 HSQL 是一种可以使用非常简单且高效的方式进行数据库操作的一种框架,通过简单的语法,使数据库操作不再成为难事.目 ...

随机推荐

  1. [luoguP1056] 排座椅(sort + 模拟)

    传送门 nc题,一直sort就过了 代码 #include <cstdio> #include <iostream> #include <algorithm> #d ...

  2. BZOJ 1225: [HNOI2001] 求正整数 高精度+搜索+质数

    题意:给定n求,有n个因子的最小正整数. 题解:水题,zcr都会,我就不说什么了. 因数个数球求法应该知道,将m分解质因数,然后发现 a1^p1*a2^p2....an^pn这样一个式子, (1+p1 ...

  3. Django:(2)视图层&模板层

    视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . ...

  4. CentOS 6.4 下用ntfs-3g挂载Windows NTFS分区

    默认情况下,CentOS 6.4不支持Widows NTFS硬盘分区读写,要想把NTFS格式的磁盘挂载到CentOS 6.4下面 需要安装第三方的插件ntfs-3g,这里我们采用编译安装插件. 1.安 ...

  5. [K/3Cloud] 单据新增、复制、新增行、复制行的过程

    整单复制:先执行CopyData(获得数据包),在执行AfterCreateNewData(可处理数据包),不会执行AfterCreateNewEntryRow 单据新增:先执行AfterCreate ...

  6. msp430入门编程0

    msp430单片机最小系统 msp430入门学习 msp430入门编程

  7. 1sting 大数 递推

    You will be given a string which only contains ‘1’; You can merge two adjacent ‘1’ to be ‘2’, or lea ...

  8. Same Tree (二叉树DFS)

    Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...

  9. 立面图 平面图 剖面图 CAD

    http://www.qinxue.com/88.html http://www.xsteach.com/course/2855 前后左右各个侧面的外部投影图——立面图:对建筑物各个侧面进行投影所得到 ...

  10. Eclipse 搭建tomcat+动态项目完整版

    1. Tomcat搭建 1.新加服务器,右击控制台的server目录->new->server->选择本地tomcat 2.配置tomcat属性(如果更改失败,将tomcat下的项目 ...