您的位置:首页 > 其它

日志-log4net

2017-05-06 11:25 253 查看
一、log4net介绍

log4net是一个第三方日志框架,有三个主要组件:loggers,appenders和layouts。这3个组件一起工作使得开发者能够根据信息类型和等级(Lever)记录信息,以及在运行时控制信息的格式化和信息的写入位置(如控制台,文件,内存,数据库等)。

Appender:可以将日志输出到不同地方,不同的输出目标对应不同的Appender,如RollingFileAppender(滚动文件),AdoNetAppender(数据库),SmtpAppender(邮件),ConsoleAppender(控制台)等。

level(级别):标识这条日志的重要级别。None>Fatal>ERROR>WARN>DEBUG>INFO>ALL,设定一个Level,那么低于这个Leveld 日志是不会被写入到Appender中的。

log4net还可以设定多个Appender,可以实现同时将日志记录到文件、数据库、发邮件等。可以设定不同Appender的不同level,例如:实现普通级别记录到文件,Error以上级别都记录到数据库。还可以自定义Appender,自己实现将Error发短信等。

二、创建log4net Demo

1.创建控制台应用程序Log4netDemo

2.右键Log4netDemo项目,选择“管理NuGet程序包”,搜索“log4net”,添加log4net程序包



3.添加配置文件log4net.config,配置文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<root>
<!-- Set root logger level to ERROR and its appenders -->
<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
<level value="DEBUG"/>
<appender-ref ref="RollingAppender"/>
<appender-ref ref="ConsoleAppender"/>
</root>
<!--指定日志记录的方式:以滚动文件的方式-->
<appender name="RollingAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<!--指定日志存放的路径-->
<file value="D:\logs\" />
<!--日志以追加的形式记录-->
<appendToFile value="true" />
<rollingStyle value="Date" />
<!--设置日志文件名称的生成规则-->
<datePattern value=""Logs_"yyyyMMdd".txt"" />
<!--多线程时采用最小锁定-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<!--日志名称是否静态:否-->
<staticLogFileName value="false" />
<!--日志内容格式和布局设置-->
<layout type="log4net.Layout.PatternLayout,log4net">
<conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/>
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender,log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/>
</layout>
</appender>
</log4net>
</configuration>


配置文件中设置了两个Appender:RollingFileAppender和ConsoleAppender,将日志文件同时输出到文件和控制台

4.添加封装类Logger,代码如下:

public class Logger
{
static Logger()
{
XmlConfigurator.Configure(new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.config")));
ILog Log = LogManager.GetLogger(typeof(Logger));
}

private ILog loger = null;
public Logger(Type type)
{
loger = LogManager.GetLogger(type);
}

/// <summary>
/// Log4日志
/// </summary>
/// <param name="msg"></param>
/// <param name="ex"></param>
public void Error(string msg = "出现异常", Exception ex = null)
{
loger.Error(msg, ex);
}

/// <summary>
/// Log4日志
/// </summary>
/// <param name="msg"></param>
public void Warn(string msg)
{
loger.Warn(msg);
}

/// <summary>
/// Log4日志
/// </summary>
/// <param name="msg"></param>
public void Info(string msg)
{
loger.Info(msg);
}

/// <summary>
/// Log4日志
/// </summary>
/// <param name="msg"></param>
public void Debug(string msg)
{
loger.Debug(msg);
}
}


5.测试如下:

class Program
{
private static Logger logger = new Logger(typeof(Program));
static void Main(string[] args)
{
try
{
int x = 1, y = 0;
int result = x / y;
}
catch (Exception ex)
{
logger.Error("程序发生异常", ex);
}
Console.ReadKey();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: