1、在程序中引用log4net.dll
2、添加-新建配置文件Log4Net.config,並在文件屬性中“復制到輸出目錄”選中“始終復制”,文件內容如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!--Log日記配置-->
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<root></root>
<!--程序中只實例化一個logger,名字為LogHelper-->
<logger name ="LogHelper">
<!--輸出所有信息,這裡只使用了Info和Error-->
<level value="ALL"/>
<!--兩個介質名稱,對應錯誤和信息-->
<appender-ref ref="ErrorRollingFileAppender" />
<appender-ref ref="InfoRollingFileAppender" />
</logger>
<!--Info介質設置-->
<appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender">
<!--定義文件存放位置,Info和Error保存在不同的文件夾,方便理解-->
<file value="Log\\Info\\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<param name="MaxSizeRollBackups" value="100"/>
<layout type="log4net.Layout.PatternLayout">
<!--輸出格式-->
<!--樣例:
記錄時間:2016-10-11 14:03:00,540
線程ID:[1]
日志級別: ERROR
錯誤內容
-->
<conversionPattern value="%newline %n記錄時間:%date %n線程ID:[%thread] %n日志級別: %-5level %n%m%n"/>
</layout>
<!--輸出的等級 INFO-->
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="INFO" />
</filter>
</appender>
<!--Error介質設置-->
<appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender">
<!--定義文件存放位置-->
<file value="Log\\Error\\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<param name="MaxSizeRollBackups" value="100"/>
<layout type="log4net.Layout.PatternLayout">
<!--輸出格式-->
<!--樣例:
記錄時間:2016-10-11 13:59:00,560
線程ID:[1]
日志級別: INFO
信息內容
-->
<conversionPattern value="%newline %n記錄時間:%date %n線程ID:[%thread] %n日志級別: %-5level %n%m%n"/>
</layout>
<!--設置輸出的等級 ERROR-->
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
</log4net>
</configuration>
3、在AssemblyInfo.cs中添加代碼,用於調用Log4Net.config:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
4、實現LogHelper,代碼如下:
public class LogHelper
{
private static log4net.ILog log = log4net.LogManager.GetLogger("LogHelper");
/// <summary>
/// 整理異常信息
/// </summary>
/// <param name="error"></param>
/// <returns></returns>
private static string Msg(Exception error)
{
string str = "";
if (error != null)
{
str = string.Format("異常類型:{0}\r\n異常消息:{1}\r\n異常信息:{2}\r\n",
error.GetType().Name, error.Message, error.StackTrace);
}
return str;
}
/// <summary>
/// 輸出異常信息
/// </summary>
/// <param name="t"></param>
/// <param name="ex"></param>
public static void LogError(Exception ex)
{
log.Error(Msg(ex));
}
/// <summary>
/// 輸出日記信息
/// </summary>
/// <param name="str"></param>
public static void LogInfo(string str)
{
log.Info(str);
}
}
5、至此,可以在代碼中方便地使用Log4Net記錄信息
try
{
throw new Exception("這是一個新異常");
}
catch(Exception ex)
{
LogHelper.LogError(ex);
}
finally
{
LogHelper.LogInfo("這是Info");
}