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. 九度oj 题目1057:众数

    题目1057:众数 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:9744 解决:3263 题目描述: 输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数, ...

  2. mongodb & macOS

    mongodb & macOS https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/ https://stacko ...

  3. [codeforces494B]Obsessive String

    [codeforces494B]Obsessive String 试题描述 Hamed has recently found a string t and suddenly became quite ...

  4. topcoder SRM 639 div2

    见这里 http://ygdtc.sinaapp.com/?p=257

  5. .net如何统计在线人数

    原文发布时间为:2008-10-17 -- 来源于本人的百度文章 [由搬家工具导入] 统计在线用户的作用不言而喻,就是为了网站管理者可以知道当前用户的多少,然后根据用户数量来观察服务器或者程序的性能, ...

  6. ubuntu14.04 配置网络

    ubuntu14.04 配置网络的练习 本文参考的资料: https://blog.csdn.net/liu782726344/article/details/52912797. 感谢作者的分享! 打 ...

  7. P2212 [USACO14MAR]浇地Watering the Fields 洛谷

    https://www.luogu.org/problem/show?pid=2212 题目描述 Due to a lack of rain, Farmer John wants to build a ...

  8. Redis学习笔记3-Redis5个可运行程序命令的使用

    在redis安装文章中,说到安装好redis后,在/usr/local/bin下有5个关于redis的可运行程序.以下关于这5个可运行程序命令的具体说明. redis-server Redisserv ...

  9. powershell 的版本号所引起的载入 FSharp 编译器问题

    powershell 的版本号所引起的载入 FSharp 编译器问题 在 64 位的系统下,大部分系统文件都有 64 位和 32 位的版本号:通常在C:\WINDOWS\system32 下的是 64 ...

  10. SQL Server 海量数据查询代码优化以及建议

    1.应尽量避免在  where  子句中对字段进行   null  值推断,否则将导致引擎放弃使用索引而进  行全表扫描,如:     select id from t where num is nu ...