前言:本章仅仅是Log4Net的基本简单的运用,后续章节会按照我的项目使用情况进行深入研究

1.项目搭建

  • 新建一个基于.netCore2.x的Web项目          =>   过程略
  • 给新建项目安装log4net包(NuGet安装 )  => 过程略

2.添加配置文件 log4Net.config

配置文件路径暂时就放在根目录,我怕到时候读取不到(尽量少给自己找事)

2.1 配置文件内容

<?xml version="1.0" encoding="utf-8"?>
<configuration><log4net><root><level value="ALL" /><appender-ref ref="RollingFile" /></root><appender name="RollingFile" type="log4net.Appender.RollingFileAppender"><!--文件路径 如果不设置(去掉 value="Log")会默认保存到[App_Data]文件夹中--><param name="File" value="Log"/><!--追加到文件--><param name="AppendToFile" value="true"/><!--最多保留的文件数,设为"-1"则不限--><param name="MaxSizeRollBackups" value="365"/><!--写到一个文件--><param name="StaticLogFileName" value="false"/><!--文件名,按日期命名--><param name="DatePattern" value="yyyyMMdd&quot;.log&quot;"/><!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]--><param name="RollingStyle" value="Date"/><!--日志格式--><layout type="log4net.Layout.PatternLayout"><!--%newline输出的日志会换行 [%date{HH:mm:ss fff}]表示记录的时间   --><conversionPattern value="[%date{HH:mm:ss fff}] %- %message%newline" /><!--如果想自己设置格式就只需要--><!--<conversionPattern value="%message"/>--></layout></appender></log4net>
</configuration>

ps:看不懂没关系,先用起来再说,没有直观体验,说了没有用

2.2  注册Log4Net服务

  • 实现方式一

这是我看了网上大多数实现方式,是在 Startup.cs 中创建一个静态变量 ,然后在其它类中调用这个静态方法获取Log对象,如下:

    public class Startup{public static ILoggerRepository repository { get; set; }public Startup(IConfiguration configuration){Configuration = configuration;repository = LogManager.CreateRepository("NETCoreRepository");// 指定配置文件XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));}}public class HomeController : Controller{private ILog log;public HomeController(IHostingEnvironment hostingEnv){this.log = LogManager.GetLogger(Startup.repository.Name, typeof(HomeController));}public IActionResult Index(){log.Error("测试日志");return View();}}

ps: 我在想,既然都在使用netcore 为啥不将 ILog 注入的服务中,构造函数注入直接获得呢。其实最大的可能就是在获取 Log实例的时候传入一个参数 typeof(HomeController),请移驾到该博客

https://blog.csdn.net/lixwjava/article/details/45950559

在我的项目中,会对写日志进行二次封装,对输出格式会有一定规定,所以,我会将Log 直接注入service中,如何封装将在后续博客中详细分析。

  • 实现方式二

在 Startup.cs 文件的 ConfigureServices 方法中添加代码,结果如下

        public void ConfigureServices(IServiceCollection services){services.Configure<CookiePolicyOptions>(options =>{// This lambda determines whether user consent for non-essential cookies is needed for a given request.options.CheckConsentNeeded = context => true;options.MinimumSameSitePolicy = SameSiteMode.None;});var repository = LogManager.CreateRepository("NETCoreLogRepository");XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));services.AddSingleton<ILog>(LogManager.GetLogger(repository.Name, typeof(Startup)));}        

创建分为三步:

a.创建一个Log4Net 仓库  repository

b.指定该仓库的配置文件路径

c.创建一个Log 实例 注入到 Service中

  2.2  使用方法

  项目中需要写日志的地方直接构造函数注入,代码如下:

    public class HomeController : Controller{public readonly ILog _log;public HomeController(ILog log){_log = log;_log.Info("This is Info Info");}}

  以上,最简单的使用方式。下篇将介绍如何根据不同日志等级写入不同的文件中。

  后记:后来想了一想,其实我们可以在将  ILoggerRepository 注入到services中而不是将ILog注入,在使用的地方就可以动态指定typeof,以便跟踪对象,反正就是不想用静态变量,如下: 

    public void ConfigureServices(IServiceCollection services){services.Configure<CookiePolicyOptions>(options =>{// This lambda determines whether user consent for non-essential cookies is needed for a given request.options.CheckConsentNeeded = context => true;options.MinimumSameSitePolicy = SameSiteMode.None;});var repository = LogManager.CreateRepository("NETCoreLogRepository");XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));services.AddSingleton<ILoggerRepository>(repository));}public class HomeController : Controller{public readonly ILog _log;public HomeController(ILoggerRepository repository){ _log = LogManager.GetLogger(repository.Name,typeof(HomeController));_log.Info("This is Info Info");}}

转载于:https://www.cnblogs.com/NemoWork/p/11330001.html

NetCore2.x 使用Log4Net(一)相关推荐

  1. Log4Net的控制台,WinForm,WebApplication使用

    一.Log4Net的控制台,WinForm,WebApplication使用 1.首先使用nuget 添加log4Net 到控制台项目中 log4j每个符号的具体含义:%d %5p %c{1}:%L ...

  2. log4net 配置参数意思

    二)         Appenders Appenders决定日志输出的方式. Appenders必须实现log4net.Appenders.IAppender接口. Log4net 2 AnsiC ...

  3. 日志记录组件[Log4net]详细介绍(转)

    一 Log4net简介 Log4net是基于.net开发的一款非常著名的记录日志开源组件.他最早是2001年7月由NeoWorks Limited启动的项目,基本的框架源于另外的一个非常著名的姐妹组件 ...

  4. 在.Net程序中使用log4net记录日志(示例)

    log4j是java开发人员所熟悉,他提供了强大的日志记录功能,log4net是为.Net记录日志开发的.使用示例如下(C#): 1.app.config文件 <?xml version=&qu ...

  5. C#使用log4net记录日志

    1.下载 log4net 右键引用,选择 管理NuGet程序包,选择浏览,输入log4net,然后点击下载 2.在App.config中输入内容(不存在自己创建) <?xml version=& ...

  6. 关于log4net日志写入mysql数据库记录

    网上关于log4net日志写入mysql数据库的博客感觉比较少,所以这边搞定之后先过来记录一下. 首先新建个项目,我命名是log4netDemo,然后需要引入两个dll,一个是mysql.dll,一个 ...

  7. 基于Log4net插件

    基本代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using log ...

  8. .net中日至框架log4net.dll如何使用

    首先配置web.config文件 1.添加如下节点 <!--log4net配置 BEGIN--> <configSections>     <section name=& ...

  9. 在ASP.NET MVC中使用Log4Net记录异常日志,出错时导向到静态页

    本篇体验在ASP.NET MVC 4中使用Log4Net记录日志. 通过NuGet安装Log4Net. 需求是:当出错时导向到Error.html静态页面,Log4Net记录错误信息. 大致的思路是: ...

最新文章

  1. Java虚拟机类加载机制
  2. Google又放大招:高效实时实现视频目标检测 | 技术头条
  3. 利用stdin stdout stderr及POSIX-linux机制重定向写日志
  4. 只需两步,Tomcat JVM 参数性能迅速调到最优!
  5. NeuralRecon:单目视频的实时Coherent 三维重建
  6. 360浏览器急速模式_国产平台:360安全浏览器扩展使用教程
  7. 3创建型模式之单例模式
  8. python3.6.0怎么安装pip_python3.6环境安装+pip环境配置教程图文详解
  9. 第九篇 - UITextField
  10. org.apache.hadoop.hive.metastore.api.SerDeInfo; local class incompatible
  11. Angular里使用createEmbeddedView的单步调试
  12. jdk8 Function
  13. 哈工大SCIR Lab | EMNLP 2019 常识信息增强的事件表示学习
  14. PropertyUtils.copyProperties复制对象失败
  15. c语言中求tana反函数,反正切函数arctanx的导数是什么
  16. 原生js用ajax上传图片,关于js ajax上传图片
  17. excel批量文件改名批量加后缀
  18. 生日快乐 吉他谱-李雪莱
  19. 单商户商城系统功能拆解39—分销应用—分销等级
  20. Python pip源

热门文章

  1. 多种方法巧妙优化数据库
  2. C++成员函数指针的另类调用方法
  3. bash-shell高级编程-变量的赋值
  4. BUUCTF-WEB:[SUCTF 2019]EasySQL 1
  5. Python学习之共享引用
  6. 异常解决(二)-- AttributeError: cannot assign module before Module.__init__() call
  7. 汇编语言等号=伪指令
  8. Let’s Build the Tiniest Blockchain In Less Than 50 Lines of Python (Part I)
  9. 区块链学堂(4):以太坊基本概念及工具Geth、Browser-solidity、Mist
  10. ipsec ip替换_点到多点ipsec-vpn NAT穿透和固定IP共存