Core的配置

一、创建core包含控制和视图的项目以及Log4Net引用

二、创建Log4Net配置文件

右击项目->添加文件   Log4Net.config

2

复制以下代码

以下配置可做参考:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!--添加自定义节点:log4net type:解析类名,程序集名(log4net.dll)-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<root>
<!--<level value="DEBUG"/>-->
<!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
<!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->
<level value="ALL"/>
<!--根据log级别记录到不同的日志文件-->
<appender-ref ref="DebugLogger" />
<appender-ref ref="InfoLogger" />
<appender-ref ref="WarnLogger" />
<appender-ref ref="ErrorLogger" />
<appender-ref ref="FatalLogger" />
</root> <!--Debug文件日志记录器-->
<appender name="DebugLogger" type="log4net.Appender.RollingFileAppender">
<!--日志存放文件夹-->
<file value="Log\Debug\"/>
<!--是否追加到文件-->
<appendToFile value="true" />
<!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--使用UTF-8编码-->
<Encoding value="UTF-8" />
<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
<maxSizeRollBackups value="-1"/>
<!--是否只写到一个文件中-->
<StaticLogFileName value="false"/>
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<rollingStyle value="Date" />
<!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
<param name="datePattern" value="yyyy/yyyy-MM/yyyy-MM-dd.'log'" />
<!--过滤设置,LevelRangeFilter为使用的过滤器。-->
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="DEBUG" />
</filter>
<!--日志格式-->
<layout type="log4net.Layout.PatternLayout">
<!-- 输出格式 日期,日志级别,消息,换行-->
<param name="ConversionPattern" value="%date [%-5p] %message%n" />
</layout>
</appender> <!--InfoLog文件日志记录器-->
<appender name="InfoLogger" type="log4net.Appender.RollingFileAppender">
<!--日志存放文件夹-->
<file value="Log\Info\"/>
<!--是否追加到文件-->
<appendToFile value="true" />
<!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--使用UTF-8编码-->
<Encoding value="UTF-8" />
<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
<maxSizeRollBackups value="-1"/>
<!--是否只写到一个文件中-->
<StaticLogFileName value="false"/>
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<rollingStyle value="Date" />
<!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
<param name="datePattern" value="yyyy/yyyy-MM/yyyy-MM-dd.'log'" />
<!--过滤设置,LevelRangeFilter为使用的过滤器。-->
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="INFO" />
</filter>
<!--日志格式-->
<layout type="log4net.Layout.PatternLayout">
<!-- 输出格式 日期,日志级别,消息,换行-->
<param name="ConversionPattern" value="%date [%-5p] %message%n" />
</layout>
</appender> <!--WarnLog文件日志记录器-->
<appender name="WarnLogger" type="log4net.Appender.RollingFileAppender">
<!--日志存放文件夹-->
<file value="Log\Warn\"/>
<!--是否追加到文件-->
<appendToFile value="true" />
<!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--使用UTF-8编码-->
<Encoding value="UTF-8" />
<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
<maxSizeRollBackups value="-1"/>
<!--是否只写到一个文件中-->
<StaticLogFileName value="false"/>
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<rollingStyle value="Date" />
<!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
<param name="datePattern" value="yyyy/yyyy-MM/yyyy-MM-dd.'log'" />
<!--过滤设置,LevelRangeFilter为使用的过滤器。-->
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="WARN" />
<levelMax value="WARN" />
</filter>
<!--日志格式-->
<layout type="log4net.Layout.PatternLayout">
<!-- 输出格式 日期,日志级别,消息,换行-->
<param name="ConversionPattern" value="%date [%-5p] %message%n" />
</layout>
</appender> <!--ErrorLog文件日志记录器-->
<appender name="ErrorLogger" type="log4net.Appender.RollingFileAppender">
<!--日志存放文件夹-->
<file value="Log\Error\"/>
<!--是否追加到文件-->
<appendToFile value="true" />
<!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--使用UTF-8编码-->
<Encoding value="UTF-8" />
<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
<maxSizeRollBackups value="-1"/>
<!--是否只写到一个文件中-->
<StaticLogFileName value="false"/>
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<rollingStyle value="Date" />
<!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
<param name="datePattern" value="yyyy/yyyy-MM/yyyy-MM-dd.'log'" />
<!--过滤设置,LevelRangeFilter为使用的过滤器。-->
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="ERROR" />
</filter>
<!--日志格式-->
<layout type="log4net.Layout.PatternLayout">
<!-- 输出格式 日期,日志级别,消息,换行-->
<param name="ConversionPattern" value="%date [%-5p] %message%n" />
</layout>
</appender> <!--FatalLog文件日志记录器-->
<appender name="FatalLogger" type="log4net.Appender.RollingFileAppender">
<!--日志存放文件夹-->
<file value="Log\Fatal\"/>
<!--是否追加到文件-->
<appendToFile value="true" />
<!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--使用UTF-8编码-->
<Encoding value="UTF-8" />
<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
<maxSizeRollBackups value="-1"/>
<!--是否只写到一个文件中-->
<StaticLogFileName value="false"/>
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<rollingStyle value="Date" />
<!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
<param name="datePattern" value="yyyy/yyyy-MM/yyyy-MM-dd.'log'" />
<!--过滤设置,LevelRangeFilter为使用的过滤器。-->
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="FATAL" />
<levelMax value="FATAL" />
</filter>
<!--日志格式-->
<layout type="log4net.Layout.PatternLayout">
<!-- 输出格式 日期,日志级别,消息,换行-->
<param name="ConversionPattern" value="%date [%-5p] %message%n" />
</layout>
</appender> </log4net>
</configuration>

三、添加自定义log4net使用类

using log4net;
using log4net.Config;
using System;
using System.IO; namespace mytest
{
/// <summary>
/// Logger是直接和应用程序交互的组件。Logger只是产生日志,然后由它引用的Appender记录到指定的媒介,并由Layout控制输出格式。
/// </summary>
public class Logger
{
private static ILog logger;
static Logger()
{
if (logger == null)
{
var repository = LogManager.CreateRepository("NETCoreRepository");
//log4net从log4net.config文件中读取配置信息
XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
logger = LogManager.GetLogger(repository.Name, "InfoLogger");
}
} /// <summary>
/// (调试信息):记录系统用于调试的一切信息,内容或者是一些关键数据内容的输出。 下面演示根据每个日志等级生成对应的一个文件。
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Debug(string message, Exception exception = null)
{
if (exception == null)
logger.Debug(message);
else
logger.Debug(message, exception);
} /// <summary>
/// INFO(一般信息):记录系统运行中应该让用户知道的基本信息。例如,服务开始运行,功能已经开户等。
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Info(string message, Exception exception = null)
{
if (exception == null)
logger.Info(message);
else
logger.Info(message, exception);
} /// <summary>
/// WARN(警告):记录系统中不影响系统继续运行,但不符合系统运行正常条件,有可能引起系统错误的信息。例如,记录内容为空,数据内容不正确等。
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Warn(string message, Exception exception = null)
{
if (exception == null)
logger.Warn(message);
else
logger.Warn(message, exception);
} /// <summary>
/// (一般错误):记录系统中出现的导致系统不稳定,部分功能出现混乱或部分功能失效一类的错误。例如,数据字段为空,数据操作不可完成,操作出现异常等。
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Error(string message, Exception exception = null)
{
if (exception == null)
logger.Error(message);
else
logger.Error(message, exception);
} /// <summary>
/// FATAL(致命错误):记录系统中出现的能使用系统完全失去功能,服务停止,系统崩溃等使系统无法继续运行下去的错误。例如,数据库无法连接,系统出现死循环。
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Fatal(string message, Exception exception = null)
{
if (exception == null)
logger.Fatal(message);
else
logger.Fatal(message, exception);
} }
} 

  

四、使用

        public IActionResult Index()
{ Logger.Fatal("这是Fatal级日志");//此处调用日志记录函数记录日志
Logger.Error("这是Error级日志");
Logger.Warn("这是Warn级日志");
Logger.Info("这是Info级日志");
Logger.Debug("这是Debug级日志"); return View();
}

  

具体步骤:

1、项目创建Core web项目

2、引用log4net

3、右击项目选择创建Log4Net.config 并配置

4、创建辅助类。

5、在控制器内使用。

  

.FrameWork的配置

1、创建基于.FrameWork的空的MVC项目并添加Log4Net的Nuget包

加入

二、创建Log4Net.config类。,参考以上配置即可。

三、创建辅助对LogNet.config类操作的辅助类,参考以上配置即可

(区别-其他没有什么改变:Core是自动加载Log4Net对象,FrameWordk则是通过指定方式-具体需要第四步注册AssemblyInfo.cs并具体指定Log4Net对象)。

using log4net;
using log4net.Config;
using System;
using System.IO; namespace mytest
{
/// <summary>
/// Logger是直接和应用程序交互的组件。Logger只是产生日志,然后由它引用的Appender记录到指定的媒介,并由Layout控制输出格式。
/// </summary>
public class Logger
{
private static ILog logger;
static Logger()
{
if (logger == null)
{
XmlConfigurator.ConfigureAndWatch(new FileInfo(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile));
logger = LogManager.GetLogger(typeof(Logger));
}
} /// <summary>
/// (调试信息):记录系统用于调试的一切信息,内容或者是一些关键数据内容的输出。 下面演示根据每个日志等级生成对应的一个文件。
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Debug(string message, Exception exception = null)
{
if (exception == null)
logger.Debug(message);
else
logger.Debug(message, exception);
} /// <summary>
/// INFO(一般信息):记录系统运行中应该让用户知道的基本信息。例如,服务开始运行,功能已经开户等。
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Info(string message, Exception exception = null)
{
if (exception == null)
logger.Info(message);
else
logger.Info(message, exception);
} /// <summary>
/// WARN(警告):记录系统中不影响系统继续运行,但不符合系统运行正常条件,有可能引起系统错误的信息。例如,记录内容为空,数据内容不正确等。
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Warn(string message, Exception exception = null)
{
if (exception == null)
logger.Warn(message);
else
logger.Warn(message, exception);
} /// <summary>
/// (一般错误):记录系统中出现的导致系统不稳定,部分功能出现混乱或部分功能失效一类的错误。例如,数据字段为空,数据操作不可完成,操作出现异常等。
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Error(string message, Exception exception = null)
{
if (exception == null)
logger.Error(message);
else
logger.Error(message, exception);
} /// <summary>
/// FATAL(致命错误):记录系统中出现的能使用系统完全失去功能,服务停止,系统崩溃等使系统无法继续运行下去的错误。例如,数据库无法连接,系统出现死循环。
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Fatal(string message, Exception exception = null)
{
if (exception == null)
logger.Fatal(message);
else
logger.Fatal(message, exception);
} }
}

  

  

四、在AssemblyInfo.cs中注册这个Log4Net.config,不然是不会自动生成text文件的。

只需要添加一行代码:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]

  

五、简单使用

  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace mytest.Controllers
{
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
Logger.Fatal("这是Fatal级日志");//此处调用日志记录函数记录日志
Logger.Error("这是Error级日志");
Logger.Warn("这是Warn级日志");
Logger.Info("这是Info级日志");
Logger.Debug("这是Debug级日志"); return View();
}
}
}

  

  

即可

具体目录结构

注意:如果不行 则Log4Net.config类属性设置始终复制 即可

Log4net在类库中的用法

一、创建Common类库,并分别向项目和类库中添加Log4net包。

二、log4net的配置文件如上,设置此文件的属性复制到输出目录为:始终复制。注意这一项很重要。

也可以系统配置文件Web.config,普通应用的配置文件 为App.config,asp.net的配置文件为Web.config。

三、添加引用到程序集——在Global.asax的Application_Start事件中加入初始化代码:

    public class MvcApplication : System.Web.HttpApplication
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes); }
}

四、log4net配置文件放在项目内,并且在项目的AssemblyInfo.cs里面加上[assembly: log4net.Config.XmlConfigurator()],这样项目工程和log4net就 建立了关联

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]

五、类库内仅仅放入对log4net操作类即可。

using log4net;
using log4net.Config;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks; namespace Common
{
/// <summary>
/// Logger是直接和应用程序交互的组件。Logger只是产生日志,然后由它引用的Appender记录到指定的媒介,并由Layout控制输出格式。
/// </summary>
public class Logger
{
public static ILog logger => LogManager.GetLogger("MMISLogger"); /// <summary>
/// (调试信息):记录系统用于调试的一切信息,内容或者是一些关键数据内容的输出。 下面演示根据每个日志等级生成对应的一个文件。
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Debug(string message, Exception exception = null)
{
if (exception == null)
logger.Debug(message);
else
logger.Debug(message, exception);
} /// <summary>
/// INFO(一般信息):记录系统运行中应该让用户知道的基本信息。例如,服务开始运行,功能已经开户等。
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Info(string message, Exception exception = null)
{
if (exception == null)
logger.Info(message);
else
logger.Info(message, exception);
} /// <summary>
/// WARN(警告):记录系统中不影响系统继续运行,但不符合系统运行正常条件,有可能引起系统错误的信息。例如,记录内容为空,数据内容不正确等。
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Warn(string message, Exception exception = null)
{
if (exception == null)
logger.Warn(message);
else
logger.Warn(message, exception);
} /// <summary>
/// (一般错误):记录系统中出现的导致系统不稳定,部分功能出现混乱或部分功能失效一类的错误。例如,数据字段为空,数据操作不可完成,操作出现异常等。
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Error(string message, Exception exception = null)
{
if (exception == null)
logger.Error(message);
else
logger.Error(message, exception);
} /// <summary>
/// FATAL(致命错误):记录系统中出现的能使用系统完全失去功能,服务停止,系统崩溃等使系统无法继续运行下去的错误。例如,数据库无法连接,系统出现死循环。
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Fatal(string message, Exception exception = null)
{
if (exception == null)
logger.Fatal(message);
else
logger.Fatal(message, exception);
} }
}

六、使用方式

调用com类库的方法

            Logger.Fatal("这是Fatal级日志");//此处调用日志记录函数记录日志
Logger.Error("这是Error级日志");
Logger.Warn("这是Warn级日志");
Logger.Info("这是Info级日志");
Logger.Debug("这是Debug级日志");

一、Log4Net配置的更多相关文章

  1. Common.Logging log4net Common.Logging.Log4Net 配置

    1.log4net 单独配置 log4net支持多种格式的日志输出,我这里只配置输出到本地的txt文件这种格式. <log4net> <root> <appender-r ...

  2. Log4Net 配置StmpAppender

    目录 Log4Net 配置StmpAppender    1 1.前言    1 2.详细配置    1 1.StmpAppender配置    1 2.Root 配置    2 3.更多选项     ...

  3. C# Log4Net配置

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

  4. Log4net配置与使用简要说明

    log4net详细配置:http://logging.apache.org/log4net/本文描述如有错误,以官网的说明为准;p 一:先来看看log4net中的几个概念: 1. log4net继承机 ...

  5. MVC Log4Net 配置

    1.引用log4net.dll 2.在项目根目录下增加log4.config文件 <?xml version="1.0"?> <configuration> ...

  6. ASP.NET MVC学习之Log4Net配置(日志记录)

    Log4Net配置笔记---- 首先,添加对log4net.dll的引用. 在Web.config文件下的Configuration节点下添加Log4Net的配置信息: <!--Log4Net配 ...

  7. C# 日志系统 log4net 配置及使用

    1.引用Dll 版本是:1.2.10.0,下载Dll 2.Web.config文件配置 <?xml version="1.0" encoding="utf-8&qu ...

  8. JWT+Log4net配置与使用

    Log4net的优点        log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.程序运行过 ...

  9. log Log4NET配置

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

  10. NHibernate的调试技巧和Log4Net配置

    1.查看nhibernate写在控制台里的sql语句 在配置文件中有这么个选项,假如把它设置为true,nhibernate会把执行的sql显示在控制台上. <property name=&qu ...

随机推荐

  1. 微信公众号开发C#系列-1、微信公众平台注册

    微信公众号简介 微信公众号分为服务号.订阅号.企业号,订阅号可以个人申请,服务号和企业号要有企业资质才可以. 我们所说的微信公众号开发主要指的是公众号的账号类型,公众号的账号类型分为订阅号.服务号.企 ...

  2. Linux文本三剑客超详细教程---grep、sed、awk

    awk.grep.sed是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一.三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂.grep更适合单 ...

  3. SLAM+语音机器人DIY系列:(二)ROS入门——10.在实际机器人上运行ROS高级功能预览

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  4. C#连接基于Java开发IM——Openfire

    Openfire简介    Openfire 是开源的.基于可拓展通讯和表示协议(XMPP).采用Java编程语言开发的实时协作服务器.Openfire的效率很高,单台服务器可支持上万并发用户.    ...

  5. 数据结构——Java实现链栈

    一.分析 栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表. 链栈是指采用链式存储结构实现的 ...

  6. div悬浮窗口设计来完成注册页面

    login.jsp页面 <script type="text/javascript" src="js/register.js"></scrip ...

  7. vuex最简单、最直白、最全的入门文档

    前言 我们经常用element-ui做后台管理系统,经常会遇到父组件给子组件传递数据,下面一个简单的例子,点击按钮,把弹框显示变量数据通过子组件的props属性传递,子组件通过$emit事件监听把数据 ...

  8. FreeNas搭建踩坑指南(三)

    0x00 Dell R730 无法编辑阵列卡Raid FreeNas和Windows Server都做成了uefi启动,装之前删掉了数据盘配置,系统装好后重启发现无法进入阵列卡编辑 0x01 解决方案 ...

  9. window模拟linux环境-cygwin安装

    cygwin是一个在windows平台上运行的unix模拟环境,它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,非常有用.通过它,你就可以在不安装linux的情况 ...

  10. Java使用PipedStream管道流通信

    多线程使用PipedStream 通讯 Java 提供了四个相关的管道流,我们可以使用其在多线程进行数据传递,其分别是 类名 作用 备注 PipedInputStream 字节管道输入流 字节流 Pi ...