Log4Net从Mvc转到.Net Core
原项目用的Log4Net,不过版本比较旧,在Core里新版也进行了支持,本文用的是现在最新版本2.0.8
1、LogHelper帮助类放另一个类库中 Log/LogHelper.cs
2、单独建的配置文件放在主项目下,LogConfig/Log4Net.config
具体位置如下图:
- LogHelper.cs内容
升级版本后本来的LogManager.GetLogger()方法要指定Repository 看文章都是要CreateRepository一个.
private static readonly ILoggerRepository Repository = LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(Hierarchy))
- 不过我这样写就是不行,没有报错日志也不会写入.后面研究半天用GetRepository解决.
private static readonly ILoggerRepository Repository = LogManager.GetRepository(Assembly.GetCallingAssembly());
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Collections.Concurrent;
- using System.IO;
- using System.Reflection;
- using log4net;
- using log4net.Config;
- using log4net.Repository;
- using log4net.Repository.Hierarchy;
- //指定log4net使用的config文件来读取配置信息
- [assembly: XmlConfigurator(ConfigFile = @"LogConfig\Log4Net.config", Watch = true)]
- namespace C.Until
- {
- /// <summary>
- /// 日志帮助类
- /// </summary>
- public class LogHelper
- {
- #region 旧版本
- //private static readonly ILog Loginfo = LogManager.GetLogger("loginfo");
- //private static readonly ILog LogError = LogManager.GetLogger("logerror");
- #endregion
- private static readonly ILoggerRepository Repository = LogManager.GetRepository(Assembly.GetCallingAssembly());
- private static readonly ILog Loginfo = LogManager.GetLogger(Repository.Name, "loginfo");
- private static readonly ILog LogError = LogManager.GetLogger(Repository.Name, "logerror");
- public static void Error(string errorMsg, Exception ex = null)
- {
- if (ex != null)
- {
- LogError.Error(errorMsg, ex);
- }
- else
- {
- LogError.Error(errorMsg);
- }
- }
- public static void Info(string msg)
- {
- Loginfo.Info(msg);
- }
- }
- }
Log4Net.config
- <?xml version="1.0" encoding="utf-8"?>
- <configuration>
- <configSections>
- <!--添加自定义节点:log4net type:解析类名,程序集名(log4net.dll)-->
- <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
- </configSections>
- <log4net>
- <appender name="Log4Net_INFO" type="log4net.Appender.RollingFileAppender">
- <!--定义文件存放位置-->
- <file value="Log\\LogInfo\\" />
- <encoding value="utf-8" />
- <!--是否追加到文件,默认为true,通常无需设置-->
- <appendToFile value="true"/>
- <RollingStyle value="Date"/>
- <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
- <DatePattern value=""log"yyyyMM".log"" />
- <!--日志文件名是否为静态-->
- <StaticLogFileName value="false"/>
- <!--多线程时采用最小锁定-->
- <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
- <!--布局(向用户显示最后经过格式化的输出信息)-->
- <layout type="log4net.Layout.PatternLayout">
- <ConversionPattern value="记录时间:%date %n错误描述:%message%newline %n" />
- </layout>
- </appender>
- <appender name="Log4Net_ERROR" type="log4net.Appender.RollingFileAppender">
- <!--定义文件存放位置-->
- <file value="Log\\LogError\\" />
- <encoding value="utf-8" />
- <!--是否追加到文件,默认为true,通常无需设置-->
- <appendToFile value="true"/>
- <RollingStyle value="Date"/>
- <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
- <DatePattern value=""log"yyyyMM".log"" />
- <!--日志文件名是否为静态-->
- <StaticLogFileName value="false"/>
- <!--多线程时采用最小锁定-->
- <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
- <!--布局(向用户显示最后经过格式化的输出信息)-->
- <layout type="log4net.Layout.PatternLayout">
- <ConversionPattern value="记录时间:%date %n错误描述:%message%newline %n" />
- </layout>
- </appender>
- <logger name="logerror">
- <level value="ERROR" />
- <appender-ref ref="Log4Net_ERROR" />
- </logger>
- <logger name="loginfo">
- <level value="INFO" />
- <appender-ref ref="Log4Net_INFO" />
- </logger>
- </log4net>
- </configuration>
这里因为不同消息放在不同文件 分类处理用的“ogger name="logerror" 此种属性.
ps:在LogHelper.cs文件中用[assembly: XmlConfigurator(ConfigFile = @"LogConfig\Log4Net.config", Watch = true)]来读取配置文件,也可以在Startup.cs中注册文件路径.不过为了独立性 方便移植到别的项目中就没用此方法.
Log4Net从Mvc转到.Net Core的更多相关文章
- log4net 记录MVC监控日志
由于MVC自身的特点,可以让我们记录每一个Controller下Action的执行时间以及View视图渲染完成的时间,本文采用log4net记录MVC每个Action的执行时间和View视图渲染完成时 ...
- 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序
使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻 ...
- Taurus.MVC 支持Asp.Net Core 的过程
前言: 这些天,似乎.NET Core相关的新闻和文章经常在我眼前晃~~~ 昨天,微软又发布了.Core 2.1,又愰了一下,差点没亮瞎我的眼睛. 好吧,大概是上天给我的暗示,毕竟 CYQ.Data ...
- ASP.NET Core MVC 设计模式 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core MVC 设计模式 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core MVC 设计模式 上一章节中,我们提到 ASP.NET Co ...
- 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 ...
- mvc网站迁移.net core记录
接口return Json()时序列号小写的问题 在Startup.cs->ConfigureServices方法配置一下解决 public void ConfigureServices(ISe ...
- Log4Net在MVC下的配置以及运用线程队列记录异常信息
Log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件.数据库.EventLog等),日志就是程序的黑匣子,可以通过日志查看系统的运行过程,从而发现系统的问题.日志的作用:将运 ...
- ASP.NET MVC和ASP.NET Core MVC中获取当前URL/Controller/Action (转载)
ASP.NET MVC 一.获取URL(ASP.NET通用): [1]获取完整url(协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [ ...
- log4net 2.0.8 不支持core 数据库记录日志
经过反编译log4net 标准库的代码,原本有的数据库链接AdoNetAppender 在core里面引用的,没有掉了. 可能新版本会有.
随机推荐
- 【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版本,执行以下命令报错 在网上查找原因说说因为升级 ...
- hibernate对数据库查询的坑
hibernate对数据库的查询其实有很多种方法,下面我来介绍我知道的两种方法,以及它们可能会遇到的问题,这里前两种都是查询所有结果 最后一种是 使用hibernate查询一条记录. 第一种方法 pu ...
- phpStudy4——前端页面使用Ajax请求并解析php返回的json数据
项目需求: 在html页面显示所有用户列表信息. 需求分析: 1. html页面使用ajax向后端php请求用户数据 2. php脚本查询数据库,并将查询后的结果以json格式返回前端html页面 3 ...
- django的视图函数介绍
我们来看下views视图中的函数的request这个变量到底有哪些方法和属性 1.request.path 结果:不包括域名和端口的url路径 2.request.method 结果:这次请求的方法, ...
- Linux之常用命令
1.cd命令 这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径.如: cd /root/Docements # 切换到 ...
- Ubuntu下多个版本OpenCV管理(Multiple Opencv version)
背景: 最近,在Nvidia的GPU嵌入式开发板Jetson TX1(简称TX1)上移植深度学习目标检测算法YOLO.在TX1上安装了官方提供的opencv版本——OpenCV4Tegra(OpenC ...
- php Pthread 多线程 (四) 共享内存
有些时候我们希望在多个线程中共享一些需要的数据,我们可以使用shmop扩展. <?php class Count extends Thread { private $name = ''; pub ...
- 泛型约束where条件的使用(通过类型参数动态反射创建实例)
定义抽象的人类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- 泛型约束where条件的使用(可以通过类型参数动态反射创建实例)
定义抽象的人类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- Response.Redirect原理图解