1、添加引用
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5CNwUTO2MWM4MjNzQTMhNDOxYzXxUDMwcTM0AzLcFTMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
2、添加一個應用程式配置檔案,并将其改名
3、内部配置
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<logger name="logerror">
<level value="ALL" />
<appender-ref ref="ErrorAppender" />
</logger>
<logger name="loginfo">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</logger>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogError\\" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<!--<param name="MaximumFileSize" value="100MB" />
<param name="MaxSizeRollBackups" value="1000" />-->
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyy-MM-dd".log"" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="異常時間:%date 線程ID:[%thread] 日志級别:%-5level 相關類:%logger - 描述:%message%newline" />
</layout>
</appender>
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogInfo\\" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<!--<param name="MaximumFileSize" value="100MB" />
<param name="MaxSizeRollBackups" value="1000" />-->
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyy-MM-dd".log"" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="記錄時間:%date 線程ID:[%thread] 日志級别:%-5level 相關類:%logger - 描述:%message%newline" />
</layout>
</appender>
</log4net>
</configuration>
配置樣式:
%m(message):輸出的日志消息,如ILog.Debug(…)輸出的一條消息
%n(new line):換行
%d(datetime):輸出目前語句運作的時刻
%r(run time):輸出程式從運作到執行到目前語句時消耗的毫秒數
%t(thread id):目前語句所在的線程ID
%p(priority): 日志的目前優先級别,即DEBUG、INFO、WARN…等
%c(class):目前日志對象的名稱,例如:
%f(file):輸出語句所在的檔案名輸出樣式:
%m(message):輸出的日志消息,如ILog.Debug(…)輸出的一條消息
%n(new line):換行
%d(datetime):輸出目前語句運作的時刻
%r(run time):輸出程式從運作到執行到目前語句時消耗的毫秒數
%t(thread id):目前語句所在的線程ID
%p(priority): 日志的目前優先級别,即DEBUG、INFO、WARN…等
%c(class):目前日志對象的名稱,例如:
%f(file):輸出語句所在的檔案名。
%l(line):輸出語句所在的行号。
%數字:表示該項的最小長度,如果不夠,則用空格填充,如“%-5level”表示level的最小寬度是5個字元,如果實際長度不夠5個字元則以空格填充。。
%l(line):輸出語句所在的行号。
%數字:表示該項的最小長度,如果不夠,則用空格填充,如“%-5level”表示level的最小寬度是5個字元,如果實際長度不夠5個字元則以空格填充。
配置詳解
<!--控制級别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
<!--比如定義級别為INFO,則INFO級别向下的級别,比如DEBUG日志将不會被記錄-->
<!--日志檔案名開頭,復原用Date隻需相對路徑即可-->
<file value="c:\Log\Test.log"/>
<!--日期的格式,每天換一個檔案記錄,如不設定則永遠隻記錄一天的日志,需設定-->
<datePattern value="(yyyyMMdd)"/>
<!--是否追加到檔案,預設為true,通常無需設定-->
<appendToFile value="true"/>
<!--變換的形式為日期,這種情況下每天隻有一個日志-->
<!--此時MaxSizeRollBackups和maximumFileSize的節點設定沒有意義-->
<!--<rollingStyle value="Date"/>-->
<!--變換的形式為日志大小-->
<!--這種情況下MaxSizeRollBackups和maximumFileSize的節點設定才有意義-->
<RollingStyle value="Size"/>
<!--每天記錄的日志檔案個數,與maximumFileSize配合使用-->
<MaxSizeRollBackups value="10"/>
<!--每個日志檔案的最大大小-->
<!--可用的機關:KB|MB|GB-->
<!--不要使用小數,否則會一直寫入目前日志-->
<maximumFileSize value="2MB"/>
4、觸發配置二選一
a、添加配置語句
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
b、
<add key="log4net.Config" value="log4net.config"/>
<add key="log4net.Config.Watch" value="True"/>
5、修改配置檔案屬性
/// <summary>
/// 記錄錯誤日志
/// </summary>
/// <param name="message"></param>
/// <param name="ex"></param>
public static void Error(string message, Exception ex)
{
ILog log =LogManager.GetLogger("logerror");
if (ex != null)
log.Error(message, ex);
else
log.Error(message);
}
/// <summary>
/// 記錄消息日志
/// </summary>
/// <param name="message"></param>
public static void Info(string message)
{
ILog log = LogManager.GetLogger("loginfo");
log.Info(message);
}