到nuget里下載log4net 這裡為幫組類 可以改為靜態方法 private static ILog logger; static LogImp()//這個是構造函數 { if (logger == null) { var repository = LogManager.CreateReposi ...
到nuget里下載log4net
這裡為幫組類 可以改為靜態方法
private static ILog logger; static LogImp()//這個是構造函數 { if (logger == null) { var repository = LogManager.CreateRepository("WebApplication1");///這裡改為項目名稱 //指定配置文件 XmlConfigurator.Configure(repository, new FileInfo("log4net.config")); lock (locker) { if (logger == null) { lock (locker) logger = LogManager.GetLogger(repository.Name, "RollingLogFileAppender"); } } } }
/// <summary> /// 調試信息 /// </summary> /// <param name="message"></param> /// <param name="exception"></param> public void Debug(string message, Exception exception = null) { if (exception == null) logger.Debug(message); else logger.Debug(FormartLog(message, exception)); } /// <summary> /// 一般信息 /// </summary> /// <param name="message"></param> /// <param name="exception"></param> public void Info(string message, Exception exception = null) { if (exception == null) logger.Info(message); else logger.Info(FormartLog(message, exception)); } /// <summary> /// 警告 /// </summary> /// <param name="message"></param> /// <param name="exception"></param> public void Warn(string message, Exception exception = null) { if (exception == null) logger.Warn(message); else logger.Warn(FormartLog(message, exception)); } /// <summary> /// 一般錯誤 /// </summary> /// <param name="message"></param> /// <param name="exception"></param> public void Error(string message, Exception exception = null) { if (exception == null) logger.Error(message); else logger.Error(FormartLog(message, exception)); } /// <summary> /// 致命錯誤 /// </summary> /// <param name="message"></param> /// <param name="exception"></param> public void Fatal(string message, Exception exception = null) { if (exception == null) logger.Fatal(message); else logger.Fatal(FormartLog(message, exception)); } /// <summary> /// 自定義返回格式 /// </summary> /// <param name="throwMsg"></param> /// <param name="ex"></param> /// <returns></returns> private static string FormartLog(string throwMsg, Exception ex) { return string.Format("【錯誤地點】:{0} \r\n【異常類型】:{1} \r\n【異常信息】:{2} \r\n【堆棧調用】:{3}", new object[] { throwMsg, ex.GetType().Name, ex.Message, ex.StackTrace }); }
然後打開項目在webapi下麵安裝Microsoft.Extensions.Logging.Log4Net.AspNetCore
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <!-- Debug 將日誌以回滾文件的形式寫到文件中 --> <appender name="RollingFileDebug" type="log4net.Appender.RollingFileAppender"> <!-- 日誌文件存放位置,可以為絕對路徑也可以為相對路徑 --> <file value="Log\\Debug\" /> <!-- 將日誌信息追加到已有的日誌文件中--> <appendToFile value="true" /> <param name="MaxFileSize" value="10240"/> <param name="MaxSizeRollBackups" value="100"/> <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!-- 指定按日期切分日誌文件 --> <rollingStyle value="Date" /> <!-- 日誌文件的命名規則 --> <datePattern value="yyyy-MM-dd_HH'.log'" /> <!-- 當將日期作為日誌文件的名字時,必須將staticLogFileName的值設置為false --> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="【異常時間】:%date【線程ID】:%thread%newline【異常級別】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="Debug" /> <param name="LevelMax" value="Debug" /> </filter> </appender> <!-- Info 將日誌以回滾文件的形式寫到文件中 --> <appender name="RollingFileInfo" type="log4net.Appender.RollingFileAppender"> <!-- 日誌文件存放位置,可以為絕對路徑也可以為相對路徑 --> <file value="Log\\Info\\" /> <!-- 將日誌信息追加到已有的日誌文件中--> <appendToFile value="true" /> <param name="MaxFileSize" value="10240"/> <param name="MaxSizeRollBackups" value="100"/> <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!-- 指定按日期切分日誌文件 --> <rollingStyle value="Date" /> <!-- 日誌文件的命名規則 --> <datePattern value="yyyy-MM-dd_HH'.log'" /> <!-- 當將日期作為日誌文件的名字時,必須將staticLogFileName的值設置為false --> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="【異常時間】:%date【線程ID】:%thread%newline【異常級別】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="Info" /> <param name="LevelMax" value="Info" /> </filter> </appender> <!-- Warn 將日誌以回滾文件的形式寫到文件中 --> <appender name="RollingFileWarn" type="log4net.Appender.RollingFileAppender"> <!-- 日誌文件存放位置,可以為絕對路徑也可以為相對路徑 --> <file value="Log\\Warn\\" /> <!-- 將日誌信息追加到已有的日誌文件中--> <appendToFile value="true" /> <param name="MaxFileSize" value="10240"/> <param name="MaxSizeRollBackups" value="100"/> <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!-- 指定按日期切分日誌文件 --> <rollingStyle value="Date" /> <!-- 日誌文件的命名規則 --> <datePattern value="yyyy-MM-dd_HH'.log'" /> <!-- 當將日期作為日誌文件的名字時,必須將staticLogFileName的值設置為false --> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="【異常時間】:%date【線程ID】:%thread%newline【異常級別】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="Warn" /> <param name="LevelMax" value="Warn" /> </filter> </appender> <!-- Error 將日誌以回滾文件的形式寫到文件中 --> <appender name="RollingFileError" type="log4net.Appender.RollingFileAppender"> <!-- 日誌文件存放位置,可以為絕對路徑也可以為相對路徑 --> <file value="Log\\Error\\" /> <!-- 將日誌信息追加到已有的日誌文件中--> <appendToFile value="true" /> <param name="MaxFileSize" value="10240"/> <param name="MaxSizeRollBackups" value="100"/> <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!-- 指定按日期切分日誌文件 --> <rollingStyle value="Date" /> <!-- 日誌文件的命名規則 --> <datePattern value="yyyy-MM-dd_HH'.log'" /> <!-- 當將日期作為日誌文件的名字時,必須將staticLogFileName的值設置為false --> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="【異常時間】:%date【線程ID】:%thread%newline【異常級別】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="Error" /> <param name="LevelMax" value="Error" /> </filter> </appender> <!-- Fatal 將日誌以回滾文件的形式寫到文件中 --> <appender name="RollingFileFatal" type="log4net.Appender.RollingFileAppender"> <!-- 日誌文件存放位置,可以為絕對路徑也可以為相對路徑 --> <file value="Log\\Fatal\\" /> <!-- 將日誌信息追加到已有的日誌文件中--> <appendToFile value="true" /> <param name="MaxFileSize" value="10240"/> <param name="MaxSizeRollBackups" value="100"/> <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!-- 指定按日期切分日誌文件 --> <rollingStyle value="Date" /> <!-- 日誌文件的命名規則 --> <datePattern value="yyyy-MM-dd_HH'.log'" /> <!-- 當將日期作為日誌文件的名字時,必須將staticLogFileName的值設置為false --> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="【異常時間】:%date【線程ID】:%thread%newline【異常級別】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="Fatal" /> <param name="LevelMax" value="Fatal" /> </filter> </appender> <logger name="RollingLogFileAppender"> <level value="ALL" /> <appender-ref ref="RollingFileDebug" /> <appender-ref ref="RollingFileInfo" /> <appender-ref ref="RollingFileWarn" /> <appender-ref ref="RollingFileError" /> <appender-ref ref="RollingFileFatal" /> </logger> <!--<root> 控制級別,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF 比如定義級別為INFO,則INFO級別向下的級別,比如DEBUG日誌將不會被記錄 如果沒有定義LEVEL的值,則預設為DEBUG <level value="ALL" /> 按日期切分日誌文件,並將日期作為日誌文件的名字 <appender-ref ref="RollingFileAppenderNameByDate" /> </root>--> </log4net> </configuration>
這個分類分等級了
改為始終複製 運行項目進行日誌使用 就會發現在項目文件夾下\bin\Debug\net6.0發現log文件夾