Log4net——.NET开源日志记录组件的基本应用【分类库可移植使用】

Log4net——.NET开源日志记录组件的基本应用【分类库使用】

简单介绍

log4net是.Net下一个非常好用的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。
该博文主要介绍如何将其分类库使用,日后直接套用。

1、先安装log4net组件,直接在NuGet下载依赖包即可

Log4net——.NET开源日志记录组件的基本应用【分类库可移植使用】_第1张图片

2、在类库文件AssemblyInfo.cs最下方加代码

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

Log4net——.NET开源日志记录组件的基本应用【分类库可移植使用】_第2张图片

3、添加警告等级的枚举类LogLevel

namespace Log4net.Logger
{
    public enum LogLevel
    {
        Debug,
        Info,
        Warn,
        Error,
        Fatal
    }
}

4、添加主体类LogUtil

4.1 在主体类中先创建单例模式

private static LogUtil instance;
private LogUtil() { }
public static LogUtil Instance
{
    get
    {
        return instance ?? (instance = new LogUtil());
    }
}

4.2封装属性以便查看和调用

private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public bool IsDebugEnabled
{
    get { return log.IsDebugEnabled; }
}
public bool IsInfoEnabled
{
    get { return log.IsInfoEnabled; }
}
public bool IsWarnEnabled
{
    get { return log.IsWarnEnabled; }
}
public bool IsErrorEnabled
{
    get { return log.IsErrorEnabled; }
}
public bool IsFatalEnabled
{
    get { return log.IsFatalEnabled; }
}

4.3封装方法

#region  [ Error ]

public void Error(string message)
{
    if (this.IsErrorEnabled)
    {
        this.Log(LogLevel.Error, message);
    }
}

public void Error(string message, Exception exception)
{
    if (this.IsErrorEnabled)
    {
        this.Log(LogLevel.Error, message, exception);
    }
}

public void ErrorFormat(string format, params object[] args)
{
    if (this.IsErrorEnabled)
    {
        this.Log(LogLevel.Error, format, args);
    }
}

public void ErrorFormat(string format, Exception exception, params object[] args)
{
    if (this.IsErrorEnabled)
    {
        this.Log(LogLevel.Error, string.Format(format, args), exception);
    }
}
#endregion

#region  [ Fatal ]

public void Fatal(string message)
{
    if (this.IsFatalEnabled)
    {
        this.Log(LogLevel.Fatal, message);
    }
}

public void Fatal(string message, Exception exception)
{
    if (this.IsFatalEnabled)
    {
        this.Log(LogLevel.Fatal, message, exception);
    }
}

public void FatalFormat(string format, params object[] args)
{
    if (this.IsFatalEnabled)
    {
        this.Log(LogLevel.Fatal, format, args);
    }
}

public void FatalFormat(string format, Exception exception, params object[] args)
{
    if (this.IsFatalEnabled)
    {
        this.Log(LogLevel.Fatal, string.Format(format, args), exception);
    }
}
#endregion

4.4 最后再加上两个判断方法


private void Log(LogLevel level, string format, params object[] args)
{
    switch (level)
    {
        case LogLevel.Debug:
            log.DebugFormat(format, args);
            break;
        case LogLevel.Info:
            log.InfoFormat(format, args);
            break;
        case LogLevel.Warn:
            log.WarnFormat(format, args);
            break;
        case LogLevel.Error:
            log.ErrorFormat(format, args);
            break;
        case LogLevel.Fatal:
            log.FatalFormat(format, args);
            break;
    }
}


private void Log(LogLevel level, string message, Exception exception)
{
    switch (level)
    {
        case LogLevel.Debug:
            log.Debug(message, exception);
            break;
        case LogLevel.Info:
            log.Info(message, exception);
            break;
        case LogLevel.Warn:
            log.Warn(message, exception);
            break;
        case LogLevel.Error:
            log.Error(message, exception);
            break;
        case LogLevel.Fatal:
            log.Fatal(message, exception);
            break;
    }
}

5、在其他类库中使用log4net类库

5.1生成上一个类库,并在需要使用的类库中添加该dll

Log4net——.NET开源日志记录组件的基本应用【分类库可移植使用】_第3张图片

5.2 添加配置文件Log4net.config,并前其属性改成“始终复制”

Log4net——.NET开源日志记录组件的基本应用【分类库可移植使用】_第4张图片



  
    

6、使用,这里我以Winform为例创建了Button的点击事件

private void btnExportMsg_Click(object sender, EventArgs e)
{		
	LogUtil.Instance.Debug("Debug Info");		
	LogUtil.Instance.Warn("Warn Info");
	LogUtil.Instance.Error("Eorror Info");
	LogUtil.Instance.Fatal("Fatal Info");
	LogUtil.Instance.Info("Info Info");
}

7、文件查看,到Debug/Log中即可查看

Log4net——.NET开源日志记录组件的基本应用【分类库可移植使用】_第5张图片

8、建议:需要更详细了解如何使用的话,可详细查看配置文件的各个内容,或者查看其他博客的详细介绍,本文只介绍如何简单使用以及可移植使用。

9、Demo下载:https://download.csdn.net/download/qq_34202873/10741486

你可能感兴趣的:(Log4net——.NET开源日志记录组件的基本应用【分类库可移植使用】)