一、引入log4net
NuGet包。web
二、修改Global.asax
下的Application_Start
方法。加入log4net.Config.XmlConfigurator.Configure()
,修改以下:mvc
protected void Application_Start() {
AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); log4net.Config.XmlConfigurator.Configure(); }
三、修改web.config
文件,增長如下節點配置:app
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections> <log4net configSource="Config\log4net.config" />
四、在項目中新建Config
文件夾,用於存放配置文件。asp.net
五、在文件夾下新建文件log4net.config
,內容以下:ide
<?xml version="1.0"?> <log4net> <root> <level value="DEBUG"/> <appender-ref ref="SysAppender"/> <appender-ref ref="consoleApp"/> </root> <!--信息日誌配置--> <appender name="SysAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Logs\\" /> <param name="AppendToFile" value="true" /> <param name="MaximumFileSize" value="20MB" /> <param name="MaxSizeRollBackups" value="100" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="\\yyyyMM\\yyyyMMdd".log"" /> <param name="RollingStyle" value="Composite" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%n -------------------------------------------------------------------------------------- %n日誌時間:%d [%t] %n日誌級別:%-5p %n日 志 類:%c [%x] %n%m %n" /> <param name="Header" value=" ====================================================================================== " /> </layout> </appender> <appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net"> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> </layout> </appender> <logger name="WebLogger"> <level value="DEBUG"/> </logger> </log4net>
調用示例:測試
private log4net.ILog log = log4net.LogManager.GetLogger("TestJob"); public void Execute(IJobExecutionContext context) { var logContent = string.Format("{0}==>>{1}{2}", DateTime.Now, "create new log.", Environment.NewLine); log.Info(logContent); }
新建Log4netHelper
類,內容以下:spa
using log4net; using log4net.Repository; using System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Text; namespace Five.ScheduleQuartz.Utils.Tool { /// <summary> /// 日誌等級 /// </summary> public enum LogLevel { Error, Debug, Warning, Info } /// <summary> /// 單例模式初始化 /// </summary> public class Singleton { private ILog Log; private static Singleton instance; private Singleton() { } public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } /// <summary> /// 獲取日誌初始化器 /// </summary> /// <param name="type">類名 方法名</param> /// <returns></returns> public ILog Init(string type) { Log = LogManager.GetLogger(Log4netHelper.Repository.Name, type); return Log; } } /// <summary> /// 日誌操做類 /// </summary> public class Log4netHelper { /// <summary> /// log4net 倉儲 /// </summary> public static ILoggerRepository Repository { get; set; } /// <summary> /// 輸出Erro日誌 /// </summary> /// <param name="message">日誌內容</param> public static void Error(string message) { StackTrace trace = new StackTrace(); //獲取是哪一個類來調用的 var className = trace.GetFrame(1).GetMethod().DeclaringType; //獲取方法名稱 MethodBase method = trace.GetFrame(1).GetMethod(); var type = "類名:" + className.Namespace + "\r\n\r\t\r\r方法名:" + method.Name; WriteLog(LogLevel.Error, message, type); } /// <summary> /// 輸出Warning日誌 /// </summary> /// <param name="message">日誌內容</param> public static void Warning(string message) { StackTrace trace = new StackTrace(); //獲取是哪一個類來調用的 var className = trace.GetFrame(1).GetMethod().DeclaringType; //獲取方法名稱 MethodBase method = trace.GetFrame(1).GetMethod(); var type = "類名:" + className.Namespace + "\r\n\r\t\r\r方法名:" + method.Name; //記錄日誌 WriteLog(LogLevel.Warning, message, type); } /// <summary> /// 輸出Info日誌 /// </summary> /// <param name="message">日誌內容</param> public static void Info(string message) { StackTrace trace = new StackTrace(); //獲取是哪一個類來調用的 var className = trace.GetFrame(1).GetMethod().DeclaringType; //獲取方法名稱 MethodBase method = trace.GetFrame(1).GetMethod(); var type = "類名:" + className.Namespace + "\r\n\r\t\r\r方法名:" + method.Name; //記錄日誌 WriteLog(LogLevel.Info, message, type); } /// <summary> /// 輸出Debug日誌 /// </summary> /// <param name="message">日誌內容</param> public static void Debug(string message) { StackTrace trace = new StackTrace(); //獲取是哪一個類來調用的 var className = trace.GetFrame(1).GetMethod().DeclaringType; //獲取方法名稱 MethodBase method = trace.GetFrame(1).GetMethod(); var type = "類名:" + className.Namespace + "\r\n\r\t\r\r方法名:" + method.Name; //記錄日誌 WriteLog(LogLevel.Debug, message, type); } /// <summary> /// 寫日誌 /// </summary> /// <param name="logLevel">日誌等級</param> /// <param name="message">日誌信息</param> /// <param name="type">類名 方法名</param> private static void WriteLog(LogLevel logLevel, string message, string type) { ILog Log = Singleton.getInstance().Init(type); switch (logLevel) { case LogLevel.Debug: Log.Debug(message); break; case LogLevel.Error: Log.Error(message); break; case LogLevel.Info: Log.Info(message); break; case LogLevel.Warning: Log.Warn(message); break; } } } }
修改Startup
以下:.net
public Startup(IConfiguration configuration) { Configuration = configuration; //日誌配置文件 Log4netHelper.Repository = LogManager.CreateRepository("NETCoreRepository"); XmlConfigurator.Configure(Log4netHelper.Repository, new FileInfo("./Config/log4net.config")); }
log4net.config
配置文件內容參考上面的內容。日誌
使用示例:code
Log4netHelper.Info("測試日誌內容");