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里面引用的,没有掉了. 可能新版本会有.
随机推荐
- 每月IT摘录201808--201809
一.技术 海量数据的解决方案: 使用缓存: 页面静态化技术: 数据库优化: 分离数据库中活跃的数据: 批量读取和延迟修改: 读写分离: 使用NoSQL和Hadoop等技术: 分布式部署数据库: 应用服 ...
- Web开发: servlet的session为null?
servlet的session(会话)显示为null,一般是web.xml中配置不对或者在浏览器输入的url不正确造成的. web.xml配置如下: <servlet> <servl ...
- ios web input 内边阴影
ios网页中,默认input上部有阴影,去除方法: -webkit-appearance: none;
- python之字典【dict】
#Auther Bob#--*--conding:utf-8 --*-- #创建一个字典dictdic1 = {'k1':'v1','k2':'v2'}dic2 = dict(k1='v1',k2=' ...
- OpenStack的架构详解(转)
OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集.其宗旨在于,帮助组织运行为虚拟计算或存储服务的云,为公有云.私有云,也为大云.小云提供可扩展的.灵活的 ...
- curl: (60) SSL certificate problem: unable to get local issuer certificate 错误
今天同事做微信管理的项目,请求接口返回如下错误SSL certificate problem: unable to get local issuer certificate. 此问题的出现是由于没有配 ...
- 接触mybatis使用
1.mybatis mybatis是一个自定义sql.存储过程和高级映射的持久层框架,是Apache下的顶级项目. mybatis可以让程序员将主要精力放在sql上,通过mybatis提供的映射方式. ...
- 菜刀连接webshell
中国菜刀,一个非常好用而又强大的webshell,它可不是用来切菜的做饭的道具哦,是一款专业的网站管理软件,大小只有300多KB,真是小巧实用啊!不过被不法分子利用到,就是一个黑站的利器了.我记得以前 ...
- 移动端input验证只允许有数字 在safari浏览器一直不成功解决
<input class="lineHeight-30" type="text" onkeyup="value=value.replace(/[ ...
- Codeforces 710C. Magic Odd Square n阶幻方
C. Magic Odd Square time limit per test:1 second memory limit per test:256 megabytes input:standard ...