1. 首先要下載 log4net.2.0.8 組件Dll 引用 放在自己的項目中 , 在自己的web項目中找到 Global.asax文件Application_Start 方法中 加載你的 log4net.config 日誌配置文件
protected void Application_Start()
{
log4net.Config.XmlConfigurator.Configure(new FileInfo(Server.MapPath("/Config/Log4Net.config")));
}
log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="AdoNetAppender_file" type="log4net.Appender.RollingFileAppender">
<!--日誌文件路徑,按文件大小方式輸出時在這裏指定文件名,並且前面的日誌按天在文件名後自動添加當天日期形成文件-->
<param name= "File" value= "Log\\"/>
<!--是否是向文件中追加日誌-->
<param name= "AppendToFile" value= "true"/>
<!--記錄日誌寫入文件時,不鎖定文本文件-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--Unicode編碼-->
<Encoding value="UTF-8" />
<!--最多產生的日誌文件數,value="-1"爲不限文件數-->
<param name="MaxSizeRollBackups" value="-1" />
<!--log保留天數-->
<param name= "MaxSizeRollBackups" value= "365" />
<!--日誌文件名是否是固定不變的(是否只寫到一個文件中)-->
<param name= "StaticLogFileName" value= "false" />
<!--按照何種方式產生多個日誌文件(日期[Date],文件大小[Size],混合[Composite])-->
<param name="RollingStyle" value="Date" />
<!--按日期產生文件夾,文件名[在日期方式與混合方式下使用]日誌文件名格式爲:2008-08-31.log -->
<param name= "DatePattern" value= "yyyy-MM-dd".log""/>
<!--<param name= "DatePattern" value= "yyyy-MM/yyyy-MM-dd".log""/>-->
<!--每個文件的大小。只在[混合方式與文件大小方式]下使用,超出大小的在文件名後自動增加1重新命名-->
<param name="maximumFileSize" value="500KB" />
<!--記錄的格式。-->
<layout type="log4net.Layout.PatternLayout">
<!--
%d, %date :表示當然的時間
%p, %level :表示日誌的級別
%c, %logger :表示日誌產生的主題或名稱,通常是所在的類名,便於定位問題
%m, %message :表示日誌的具體內容
%n, %newline :換行
%exception :表示異常信息
-->
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m %logger %exception %n" />
</layout>
</appender>
<logger name="SystemLog" additivity="true">
<level value="ALL"/>
<appender-ref ref="AdoNetAppender_file" />
</logger>
</log4net>
</configuration>
2.Log4Net實體類
using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace UtilityFactory.UtilityRoom
{
public class Log4Net
{
private Log4Net()
{
}
public static readonly ILog log = LogManager.GetLogger("SystemLog");
public static void Info(object msg)
{
if (log.IsInfoEnabled)
{
log.Info(JsonUtility.SerializeObject(msg));
}
}
public static void Info(string title, object msg)
{
if (log.IsInfoEnabled)
{
log.Info(title + ": " + JsonUtility.SerializeObject(msg));
}
}
public static void Info(string msg)
{
if (log.IsInfoEnabled)
{
log.Info(msg);
}
}
public static void Warn(string msg)
{
if (log.IsWarnEnabled)
{
log.Warn(msg);
}
}
public static void Debug(object msg)
{
if (log.IsDebugEnabled)
{
log.Debug(JsonUtility.SerializeObject(msg));
}
}
public static void Debug(string msg)
{
if (log.IsDebugEnabled)
{
log.Debug(msg);
}
}
public static void Debug(string msg, Exception ex)
{
if (log.IsDebugEnabled)
{
log.Debug(msg, ex);
}
}
public static void Error(string msg, object obj, Exception ex)
{
if (log.IsErrorEnabled)
{
log.Error(msg + " " + JsonUtility.SerializeObject(obj), ex);
}
}
public static void Error(string msg, Exception ex)
{
if (log.IsErrorEnabled)
{
log.Error(msg, ex);
}
}
public static void Fatal(string msg, Exception ex)
{
if (log.IsFatalEnabled)
{
log.Fatal(msg, ex);
}
}
}
public class JsonUtility
{
/// <summary>
/// 將對象序列化爲JSON格式
/// </summary>
/// <param name="obj">對象</param>
/// <returns>json字符串</returns>
public static string SerializeObject(object obj)
{
if (obj == null)
{
return string.Empty;
}
return JsonConvert.SerializeObject(obj);
}
}
}
3.調用
Log4Net.Info('記錄日誌!!!');