原项目用的Log4Net,不过版本比较旧,在Core里新版也进行了支持,本文用的是现在最新版本2.0.8

1、LogHelper帮助类放另一个类库中 Log/LogHelper.cs

2、单独建的配置文件放在主项目下,LogConfig/Log4Net.config

具体位置如下图:

  1. LogHelper.cs内容
    升级版本后本来的LogManager.GetLogger()方法要指定Repository 看文章都是要CreateRepository一个.
      private static readonly ILoggerRepository Repository = LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(Hierarchy))
  1. 不过我这样写就是不行,没有报错日志也不会写入.后面研究半天用GetRepository解决.
      private static readonly ILoggerRepository Repository = LogManager.GetRepository(Assembly.GetCallingAssembly());
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Collections.Concurrent;
  6. using System.IO;
  7. using System.Reflection;
  8. using log4net;
  9. using log4net.Config;
  10. using log4net.Repository;
  11. using log4net.Repository.Hierarchy;
  12.  
  13. //指定log4net使用的config文件来读取配置信息
  14. [assembly: XmlConfigurator(ConfigFile = @"LogConfig\Log4Net.config", Watch = true)]
  15. namespace C.Until
  16. {
  17. /// <summary>
  18. /// 日志帮助类
  19. /// </summary>
  20. public class LogHelper
  21. {
  22. #region 旧版本
  23. //private static readonly ILog Loginfo = LogManager.GetLogger("loginfo");
  24. //private static readonly ILog LogError = LogManager.GetLogger("logerror");
  25. #endregion
  26.  
  27. private static readonly ILoggerRepository Repository = LogManager.GetRepository(Assembly.GetCallingAssembly());
  28. private static readonly ILog Loginfo = LogManager.GetLogger(Repository.Name, "loginfo");
  29. private static readonly ILog LogError = LogManager.GetLogger(Repository.Name, "logerror");
  30.  
  31. public static void Error(string errorMsg, Exception ex = null)
  32. {
  33. if (ex != null)
  34. {
  35. LogError.Error(errorMsg, ex);
  36. }
  37. else
  38. {
  39. LogError.Error(errorMsg);
  40. }
  41. }
  42.  
  43. public static void Info(string msg)
  44. {
  45. Loginfo.Info(msg);
  46. }
  47. }
  48. }

Log4Net.config

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <configuration>
  3. <configSections>
  4. <!--添加自定义节点:log4net type:解析类名,程序集名(log4net.dll)-->
  5. <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  6. </configSections>
  7.  
  8. <log4net>
  9. <appender name="Log4Net_INFO" type="log4net.Appender.RollingFileAppender">
  10. <!--定义文件存放位置-->
  11. <file value="Log\\LogInfo\\" />
  12. <encoding value="utf-8" />
  13. <!--是否追加到文件,默认为true,通常无需设置-->
  14. <appendToFile value="true"/>
  15. <RollingStyle value="Date"/>
  16. <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
  17. <DatePattern value="&quot;log&quot;yyyyMM&quot;.log&quot;" />
  18. <!--日志文件名是否为静态-->
  19. <StaticLogFileName value="false"/>
  20. <!--多线程时采用最小锁定-->
  21. <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  22. <!--布局(向用户显示最后经过格式化的输出信息)-->
  23. <layout type="log4net.Layout.PatternLayout">
  24. <ConversionPattern value="记录时间:%date %n错误描述:%message%newline %n" />
  25. </layout>
  26. </appender>
  27.  
  28. <appender name="Log4Net_ERROR" type="log4net.Appender.RollingFileAppender">
  29. <!--定义文件存放位置-->
  30. <file value="Log\\LogError\\" />
  31. <encoding value="utf-8" />
  32. <!--是否追加到文件,默认为true,通常无需设置-->
  33. <appendToFile value="true"/>
  34. <RollingStyle value="Date"/>
  35. <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
  36. <DatePattern value="&quot;log&quot;yyyyMM&quot;.log&quot;" />
  37. <!--日志文件名是否为静态-->
  38. <StaticLogFileName value="false"/>
  39. <!--多线程时采用最小锁定-->
  40. <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  41. <!--布局(向用户显示最后经过格式化的输出信息)-->
  42. <layout type="log4net.Layout.PatternLayout">
  43. <ConversionPattern value="记录时间:%date %n错误描述:%message%newline %n" />
  44. </layout>
  45. </appender>
  46.  
  47. <logger name="logerror">
  48. <level value="ERROR" />
  49. <appender-ref ref="Log4Net_ERROR" />
  50. </logger>
  51. <logger name="loginfo">
  52. <level value="INFO" />
  53. <appender-ref ref="Log4Net_INFO" />
  54. </logger>
  55.  
  56. </log4net>
  57. </configuration>

这里因为不同消息放在不同文件 分类处理用的“ogger name="logerror" 此种属性.

ps:在LogHelper.cs文件中用[assembly: XmlConfigurator(ConfigFile = @"LogConfig\Log4Net.config", Watch = true)]来读取配置文件,也可以在Startup.cs中注册文件路径.不过为了独立性 方便移植到别的项目中就没用此方法.

Log4Net从Mvc转到.Net Core的更多相关文章

  1. log4net 记录MVC监控日志

    由于MVC自身的特点,可以让我们记录每一个Controller下Action的执行时间以及View视图渲染完成的时间,本文采用log4net记录MVC每个Action的执行时间和View视图渲染完成时 ...

  2. 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序

    使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻 ...

  3. Taurus.MVC 支持Asp.Net Core 的过程

    前言: 这些天,似乎.NET Core相关的新闻和文章经常在我眼前晃~~~ 昨天,微软又发布了.Core 2.1,又愰了一下,差点没亮瞎我的眼睛. 好吧,大概是上天给我的暗示,毕竟 CYQ.Data  ...

  4. ASP.NET Core MVC 设计模式 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core MVC 设计模式 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core MVC 设计模式 上一章节中,我们提到 ASP.NET Co ...

  5. Working with Data » 使用Visual Studio开发ASP.NET Core MVC and Entity Framework Core初学者教程

    原文地址:https://docs.asp.net/en/latest/data/ef-mvc/intro.html The Contoso University sample web applica ...

  6. mvc网站迁移.net core记录

    接口return Json()时序列号小写的问题 在Startup.cs->ConfigureServices方法配置一下解决 public void ConfigureServices(ISe ...

  7. Log4Net在MVC下的配置以及运用线程队列记录异常信息

    Log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件.数据库.EventLog等),日志就是程序的黑匣子,可以通过日志查看系统的运行过程,从而发现系统的问题.日志的作用:将运 ...

  8. ASP.NET MVC和ASP.NET Core MVC中获取当前URL/Controller/Action (转载)

    ASP.NET MVC 一.获取URL(ASP.NET通用): [1]获取完整url(协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [ ...

  9. log4net 2.0.8 不支持core 数据库记录日志

    经过反编译log4net 标准库的代码,原本有的数据库链接AdoNetAppender 在core里面引用的,没有掉了. 可能新版本会有.

随机推荐

  1. 【MySQL报错】ERROR 1558 (HY000): Column count of mysql.user is wrong. Expected 43, found 39.

    原文参考:http://wuzhuti.cn/2348.html 之前在centos6.4系统安装的是自带的mysql 5.1版本,后来升级到了5.6版本,执行以下命令报错 在网上查找原因说说因为升级 ...

  2. hibernate对数据库查询的坑

    hibernate对数据库的查询其实有很多种方法,下面我来介绍我知道的两种方法,以及它们可能会遇到的问题,这里前两种都是查询所有结果 最后一种是 使用hibernate查询一条记录. 第一种方法 pu ...

  3. phpStudy4——前端页面使用Ajax请求并解析php返回的json数据

    项目需求: 在html页面显示所有用户列表信息. 需求分析: 1. html页面使用ajax向后端php请求用户数据 2. php脚本查询数据库,并将查询后的结果以json格式返回前端html页面 3 ...

  4. django的视图函数介绍

    我们来看下views视图中的函数的request这个变量到底有哪些方法和属性 1.request.path 结果:不包括域名和端口的url路径 2.request.method 结果:这次请求的方法, ...

  5. Linux之常用命令

    1.cd命令 这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径.如: cd /root/Docements # 切换到 ...

  6. Ubuntu下多个版本OpenCV管理(Multiple Opencv version)

    背景: 最近,在Nvidia的GPU嵌入式开发板Jetson TX1(简称TX1)上移植深度学习目标检测算法YOLO.在TX1上安装了官方提供的opencv版本——OpenCV4Tegra(OpenC ...

  7. php Pthread 多线程 (四) 共享内存

    有些时候我们希望在多个线程中共享一些需要的数据,我们可以使用shmop扩展. <?php class Count extends Thread { private $name = ''; pub ...

  8. 泛型约束where条件的使用(通过类型参数动态反射创建实例)

    定义抽象的人类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  9. 泛型约束where条件的使用(可以通过类型参数动态反射创建实例)

    定义抽象的人类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  10. Response.Redirect原理图解