1.在VS的管理Nuget中安裝 log4net
2.配置 webconfig
在configurations 節點 插入如下代碼:
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
然后再配置完整的log4net信息:我將error與info信息分開記錄
<log4net> <!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL --> <!-- 設置日志類型,root節點比logger優先 --> <!-- <root> <level value="ALL" /> <appender-ref ref="info_log" /> </root> --> <!-- 設置節點 --> <logger name="InfoLogger"> <level value="INFO" /> <appender-ref ref="info_log" /> </logger> <logger name="ErrorLogger"> <level value="ERROR" /> <level value="WARN" /> <appender-ref ref="error_log" /> </logger> <!-- 節點信息明細設置 ,講info與error分別記錄--> <appender name="info_log" type="log4net.Appender.RollingFileAppender"> <param name="File" value="log4/" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Date" /> <param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" /> <param name="StaticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> </layout> </appender> <appender name="error_log" type="log4net.Appender.RollingFileAppender"> <param name="File" value="log4/" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Date" /> <param name="DatePattern" value=""Error_"yyyyMMdd".txt"" /> <param name="StaticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> </layout> </appender> </log4net>
代碼中的使用,使用2個幫助類:
public static class LogFactory { /// <summary> /// 解析Xml的路徑 /// </summary> public const string Config = "~/Web.Config"; /// <summary> /// 錯誤日志的標簽 /// </summary> public const string Error = "ErrorLogger"; /// <summary> /// 日志記錄的標簽 /// </summary> public const string Info = "InfoLogger"; /// <summary> /// 初始化 /// </summary> public static void LogInitialize() { log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(System.Web.HttpContext.Current.Server.MapPath(Config))); } }
loghelper.cs

/// <summary> 日志輔助類 log4net /// </summary> public static class LogHelper { /// <summary> 錯誤日志 /// </summary> /// <param name="msg"></param> public static void Error(string msg) { var log = LogManager.GetLogger(LogFactory.Error); log.Error(msg); } /// <summary> 錯誤日志,帶異常 /// </summary> /// <param name="msg"></param> /// <param name="ex"></param> public static void Error(string msg, Exception ex) { var log = LogManager.GetLogger(LogFactory.Error); log.Error(msg, ex); } /// <summary> 日志記錄 /// </summary> /// <param name="msg"></param> public static void Info(string msg) { var log = LogManager.GetLogger(LogFactory.Info); log.Info(msg); } /// <summary> 日志記錄 /// </summary> /// <param name="msg"></param> /// <param name="ex"></param> public static void Info(string msg, Exception ex) { var log = LogManager.GetLogger(LogFactory.Info); log.Info(msg, ex); } /// <summary> Debug日志記錄 /// </summary> /// <param name="msg"></param> public static void Debug(string msg) { var log = LogManager.GetLogger(LogFactory.Info); log.Debug(msg); } /// <summary> Debug日志記錄 /// </summary> /// <param name="msg"></param> /// <param name="ex"></param> public static void Debug(string msg, Exception ex) { var log = LogManager.GetLogger(LogFactory.Info); log.Debug(msg, ex); } /// <summary> Format日志記錄 /// </summary> /// <param name="format"></param> /// <param name="arg0"></param> public static void Format(string format, object arg0) { var log = LogManager.GetLogger(LogFactory.Info); log.InfoFormat(format, arg0); } /// <summary> Format日志記錄 /// </summary> /// <param name="format"></param> /// <param name="arg0"></param> /// <param name="arg1"></param> public static void Format(string format, object arg0, object arg1) { var log = LogManager.GetLogger(LogFactory.Info); log.InfoFormat(format, arg0, arg1); } /// <summary> Format日志記錄 /// </summary> /// <param name="format"></param> /// <param name="arg0"></param> /// <param name="arg1"></param> /// <param name="arg2"></param> public static void Format(string format, object arg0, object arg1, object arg2) { var log = LogManager.GetLogger(LogFactory.Info); log.InfoFormat(format, arg0, arg1, arg2); } /// <summary> Format日志記錄 /// </summary> /// <param name="format"></param> /// <param name="provider"></param> /// <param name="args"></param> public static void Format(IFormatProvider provider, string format, params object[] args) { var log = LogManager.GetLogger(LogFactory.Info); log.InfoFormat(provider, format, args); } }
在Global.asax中配置初始化
LogFactory.LogInitialize();
測試頁面調用:

public ActionResult Login(LoginModel loginM) { //返回結果類 ResultModel rd = new ResultModel(); //接收前端數據 string _account = loginM.Account; string _password = loginM.password; //調用api驗證獲取返回值 LogHelper.Info("調用api記錄"); //記錄日志 //登陸成功,授權並記錄 rd.Status = statuslist.成功; rd.ResultMessage = "數據已經收到"; rd.ResulData = new string[] { _account, _password };//數組 //賦予jsonresult data rd.Data = new { rd.Status, rd.ResultMessage, rd.ResulData }; return rd; }
保存日志文件內容為亂碼的情況,需要在log4net設置中添加:
<param name="Encoding" value="utf-8" />
即可。