ASP.NET Core 有内置的log组件,遗憾的是看了微软官方文档,貌似无法直接将日志存于文件或数据库,只能由自己实现或引用第三方日志组件。

以下为Nlog和log4net的使用记录

Nlog使用

  • 搜索添加Nuget包

  1. Nlog
  2. Nlog.Web.AspNetCore
  • 新建一个xml文件,并改名为nlog.config

XML内容如下(可配置日志目录名称、输出格式):

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. autoReload="true"
  5. internalLogLevel="Warn"
  6. internalLogFile="internal-nlog.txt">
  7.  
  8. <!--define various log targets-->
  9. <targets>
  10. <!--write logs to file-->
  11. <target xsi:type="File" name="allfile" fileName="Logs/service-${shortdate}.log"
  12. layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
  13. </targets>
  14. <rules>
  15. <!--All logs, including from Microsoft-->
  16. <logger name="*" minlevel="Trace" writeTo="allfile" />
  17. </rules>
  18. </nlog>
  • 将nlog.config设置输出到目录

  • 在Startup类中配置

需要引入命名空间:

using NLog.Extensions.Logging;

using NLog.Web;

  1. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactor)
  2. {
  3. //使用Nlog
  4. loggerFactor.AddNLog();
  5. //引入配置文件
  6. env.ConfigureNLog("nlog.config");
  7. if (env.IsDevelopment())
  8. {
  9. app.UseDeveloperExceptionPage();
  10. }
  11. else
  12. {
  13. app.UseExceptionHandler("/Error");
  14. }
  15. app.UseStaticFiles();
  16. app.UseCookiePolicy();
  17.  
  18. app.UseMvc();
  19. }
  • 代码中的使用

有两中方式如下:

1、注入形式

  1. public class IndexModel : PageModel
  2. {
  3. private ILogger<IndexModel> _logger;
  4. public IndexModel(ILogger<IndexModel> logger)
  5. {
  6. _logger = logger;
  7. }
  8. public string Customer { get; set; }
  9. public void OnGet()
  10. {
  11. _logger.LogWarning("");
  12. Customer = "";
  13. }
  14. }

2、获取实例形式

  1. private static Logger Logger = LogManager.GetCurrentClassLogger();
  2. public static void Main(string[] args)
  3. {
  4. Logger.Error("");
  5. Logger.Info("");
  6. }

log4net

log4net已支持net core,来看下在net core下是如何配置的,与之前的版本还是有一点的区别

  • 使用惯例,引用Nuget

  1. log4net
  • 新建配置文件

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <configuration>
  3. <!-- This section contains the log4net configuration settings -->
  4. <log4net>
  5. <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
  6. <layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" />
  7. </appender>
  8.  
  9. <appender name="FileAppender" type="log4net.Appender.FileAppender">
  10. <file value="log-file.log" />
  11. <appendToFile value="true" />
  12. <layout type="log4net.Layout.PatternLayout">
  13. <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  14. </layout>
  15. </appender>
  16.  
  17. <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  18. <file value="logs/" />
  19. <appendToFile value="true" />
  20. <rollingStyle value="Date" />
  21. <staticLogFileName value="false" />
  22. <datePattern value="yyyy-MM-dd'.log'" />
  23. <maxSizeRollBackups value="" />
  24. <maximumFileSize value="1MB" />
  25. <layout type="log4net.Layout.PatternLayout">
  26. <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  27. </layout>
  28. </appender>
  29.  
  30. <!-- Setup the root category, add the appenders and set the default level -->
  31. <root>
  32. <level value="ALL" />
  33. <appender-ref ref="ConsoleAppender" />
  34. <appender-ref ref="FileAppender" />
  35. <appender-ref ref="RollingLogFileAppender" />
  36. </root>
  37.  
  38. </log4net>
  39. </configuration>

配置文件的相关说明,可以查看另一篇文章  点我跳转

  • 在StartUp.cs中配置log4Net

  1. public static ILoggerRepository repository { get; set; }
  2. public Startup(IConfiguration configuration)
  3. {
  4. Configuration = configuration;
  5. //log4net
  6. repository = LogManager.CreateRepository("NETCoreRepository");
  7. //指定配置文件
  8. XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
  9. }
  • Controller中的使用

  1. private ILog log = LogManager.GetLogger(Startup.repository.Name, typeof(ValuesController));
  2.  
  3. [HttpGet]
  4. public ActionResult<IEnumerable<string>> Get()
  5. {
  6. log.Info();
  7. return new string[] { "value1", "value2" };
  8. }
  • 控制台中的使用

  1. ILoggerRepository repository = LogManager.CreateRepository("NETCoreRepository");
  2. XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
  3. ILog log = LogManager.GetLogger(repository.Name,"NETCorelog4net");
  4.  
  5. log.Info("test log");

.net core 杂记:日记记录的更多相关文章

  1. .NET 4.5+项目迁移.NET Core的问题记录

    .NET 4.5+项目迁移.NET Core的问题记录 这几天试着把目前的开发框架迁移到新的.net core平台,中间遇到的问题在这里简单记录一下. 迁移过程遇到的最大的问题IOC容器.我目前使用的 ...

  2. ASP.NET Core使用Elasticsearch记录NLog日志

    ASP.NET Core使用Elasticsearch记录NLog日志 1.新建一个 ASP.NET Core项目 2.安装Nuge包 运行:Install-Package NLog.Web.AspN ...

  3. C++添加简单的日记记录

    #include<fstream>#include<iostream> using namespace std;//这是一种日记记录 b 种void LOG(char *tx, ...

  4. .net core jwt 入门记录

    从百度里搜索里搜索了很多jwt的文章,跟着文章写了一个demo,这里记录下学习过程中碰上的问题.看文章多遍,不如手工实现一次. 模板已上传到github.com:dogvane/webapi_jwt_ ...

  5. [转].NET 4.5+项目迁移.NET Core的问题记录 HTTP Error 502.5

    本文转自:http://www.cnblogs.com/ronli/p/5900001.html 这几天试着把目前的开发框架迁移到新的.net core平台,中间遇到的问题在这里简单记录一下. 迁移过 ...

  6. [Elixir001]使用tty做一个简单的日记记录

    大半年前实践的使用Evernote做知识管理 https://www.zhihu.com/question/20232993/answer/34270710里面的记录日记模块大概长成这样子 用了半年, ...

  7. .net core 杂记:WebAPI的XML请求和响应

    一般情况下,restfult api  进行数据返回或模型绑定,默认json格式会比较常见和方便,当然偶尔也会需要以XML格式的要求 对于返回XML,普通常见的方式就是在每个aciton方法进行诸如X ...

  8. asp.net core的AOP记录

    序曲:学习编程最好的方式就是敲代码,没有比这个更好的方法,哪怕你看了上百G的视频,都不如你自己敲几行代码更为有效.还有要记得敲完代码然后写一篇随笔来记录一下你所学所想. 什么叫AOP? AOP面向切面 ...

  9. .net core 杂记:用Autofac替换内置容器

    官方建议使用内置容器,但有些功能并不支持,如下: 属性注入 基于名称的注入 子容器 自定义生存期管理 Func<T> 支持 所以可以使用其他第三方IOC容器,如Autofac,下面为学习使 ...

随机推荐

  1. HTML学习笔记:2.基础语法

    HTML基本结构 HTML标签 HTML元素 HTML属性 注释 ①基本结构 <html> html:指明是个html文件 <head> <title>标题< ...

  2. PAT1082:Read Number in Chinese

    1082. Read Number in Chinese (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...

  3. struct和union的区别

    1)union是几个不同类型的变量共占一段内存(相互覆盖):struct是把不同类型的数据组合成一个整体 2)对齐方式略有区别:union不需要+,只需要拿出对齐后的最长 structure unio ...

  4. Hibernate中的常用API

    1.Configuration 1.1 加载核心配置文件, 加载hibernate.properties时:Configuration configuration = new Configuratio ...

  5. 解决MyEclipse注册失败的问题

    https://jingyan.baidu.com/article/acf728fd49519ff8e410a361.html

  6. SSM-Spring-20:Spring中事务基础

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 事务 事务是什么? 我记得当初的百度百科上讲,事务是执行的最小逻辑单元,它们要么都执行,要么都不执行 (同生共 ...

  7. mysqldump详解

    Ⅰ.mysqldump的简单使用与注意点 1.1 基本参数 只备份innodb,用不了几个参数,记住下面几个即可,其他的没什么卵用 -A 备份所有的database -B 备份哪几个数据库 -R 备份 ...

  8. OAuth 2 开发人员指南

    这是支持OAuth2.0的用户指南.对于OAuth1.0,一切都是不同的,所以看它的用户指南. 本用户指南分为两个部分,第一部分是OAuth2.0提供端(OAuth 2.0 Provider),第二部 ...

  9. monkey操作

    1.monkey命令格式 直接adb shell进入后输入monkey [options] <eventcount> 或者每次输入adb shell monkey [options] &l ...

  10. 你不知道的JavaScript--Item18 JScript的Bug与内存管理

    1.JScript的Bug IE的ECMAScript实现JScript严重混淆了命名函数表达式,搞得现很多人都出来反对命名函数表达式,而且即便是现在还一直在用的一版(IE8中使用的5.8版)仍然存在 ...