到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=https://www.cnblogs.com/bay-max-/p/"Log\\Debug\" /> <!-- 將日志資訊追加到已有的日志檔案中--> <appendToFile value=https://www.cnblogs.com/bay-max-/p/"true" /> <param name="MaxFileSize" value=https://www.cnblogs.com/bay-max-/p/"10240"/> <param name="MaxSizeRollBackups" value=https://www.cnblogs.com/bay-max-/p/"100"/> <!-- 最小鎖定模式,以允許多個行程可以寫入同一個檔案 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!-- 指定按日期切分日志檔案 --> <rollingStyle value=https://www.cnblogs.com/bay-max-/p/"Date" /> <!-- 日志檔案的命名規則 --> <datePattern value=https://www.cnblogs.com/bay-max-/p/"yyyy-MM-dd_HH'.log'" /> <!-- 當將日期作為日志檔案的名字時,必須將staticLogFileName的值設定為false --> <staticLogFileName value=https://www.cnblogs.com/bay-max-/p/"false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value=https://www.cnblogs.com/bay-max-/p/"【例外時間】:%date【執行緒ID】:%thread%newline【例外級別】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value=https://www.cnblogs.com/bay-max-/p/"Debug" /> <param name="LevelMax" value=https://www.cnblogs.com/bay-max-/p/"Debug" /> </filter> </appender> <!-- Info 將日志以回滾檔案的形式寫到檔案中 --> <appender name="RollingFileInfo" type="log4net.Appender.RollingFileAppender"> <!-- 日志檔案存放位置,可以為絕對路徑也可以為相對路徑 --> <file value=https://www.cnblogs.com/bay-max-/p/"Log\\Info\\" /> <!-- 將日志資訊追加到已有的日志檔案中--> <appendToFile value=https://www.cnblogs.com/bay-max-/p/"true" /> <param name="MaxFileSize" value=https://www.cnblogs.com/bay-max-/p/"10240"/> <param name="MaxSizeRollBackups" value=https://www.cnblogs.com/bay-max-/p/"100"/> <!-- 最小鎖定模式,以允許多個行程可以寫入同一個檔案 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!-- 指定按日期切分日志檔案 --> <rollingStyle value=https://www.cnblogs.com/bay-max-/p/"Date" /> <!-- 日志檔案的命名規則 --> <datePattern value=https://www.cnblogs.com/bay-max-/p/"yyyy-MM-dd_HH'.log'" /> <!-- 當將日期作為日志檔案的名字時,必須將staticLogFileName的值設定為false --> <staticLogFileName value=https://www.cnblogs.com/bay-max-/p/"false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value=https://www.cnblogs.com/bay-max-/p/"【例外時間】:%date【執行緒ID】:%thread%newline【例外級別】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value=https://www.cnblogs.com/bay-max-/p/"Info" /> <param name="LevelMax" value=https://www.cnblogs.com/bay-max-/p/"Info" /> </filter> </appender> <!-- Warn 將日志以回滾檔案的形式寫到檔案中 --> <appender name="RollingFileWarn" type="log4net.Appender.RollingFileAppender"> <!-- 日志檔案存放位置,可以為絕對路徑也可以為相對路徑 --> <file value=https://www.cnblogs.com/bay-max-/p/"Log\\Warn\\" /> <!-- 將日志資訊追加到已有的日志檔案中--> <appendToFile value=https://www.cnblogs.com/bay-max-/p/"true" /> <param name="MaxFileSize" value=https://www.cnblogs.com/bay-max-/p/"10240"/> <param name="MaxSizeRollBackups" value=https://www.cnblogs.com/bay-max-/p/"100"/> <!-- 最小鎖定模式,以允許多個行程可以寫入同一個檔案 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!-- 指定按日期切分日志檔案 --> <rollingStyle value=https://www.cnblogs.com/bay-max-/p/"Date" /> <!-- 日志檔案的命名規則 --> <datePattern value=https://www.cnblogs.com/bay-max-/p/"yyyy-MM-dd_HH'.log'" /> <!-- 當將日期作為日志檔案的名字時,必須將staticLogFileName的值設定為false --> <staticLogFileName value=https://www.cnblogs.com/bay-max-/p/"false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value=https://www.cnblogs.com/bay-max-/p/"【例外時間】:%date【執行緒ID】:%thread%newline【例外級別】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value=https://www.cnblogs.com/bay-max-/p/"Warn" /> <param name="LevelMax" value=https://www.cnblogs.com/bay-max-/p/"Warn" /> </filter> </appender> <!-- Error 將日志以回滾檔案的形式寫到檔案中 --> <appender name="RollingFileError" type="log4net.Appender.RollingFileAppender"> <!-- 日志檔案存放位置,可以為絕對路徑也可以為相對路徑 --> <file value=https://www.cnblogs.com/bay-max-/p/"Log\\Error\\" /> <!-- 將日志資訊追加到已有的日志檔案中--> <appendToFile value=https://www.cnblogs.com/bay-max-/p/"true" /> <param name="MaxFileSize" value=https://www.cnblogs.com/bay-max-/p/"10240"/> <param name="MaxSizeRollBackups" value=https://www.cnblogs.com/bay-max-/p/"100"/> <!-- 最小鎖定模式,以允許多個行程可以寫入同一個檔案 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!-- 指定按日期切分日志檔案 --> <rollingStyle value=https://www.cnblogs.com/bay-max-/p/"Date" /> <!-- 日志檔案的命名規則 --> <datePattern value=https://www.cnblogs.com/bay-max-/p/"yyyy-MM-dd_HH'.log'" /> <!-- 當將日期作為日志檔案的名字時,必須將staticLogFileName的值設定為false --> <staticLogFileName value=https://www.cnblogs.com/bay-max-/p/"false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value=https://www.cnblogs.com/bay-max-/p/"【例外時間】:%date【執行緒ID】:%thread%newline【例外級別】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value=https://www.cnblogs.com/bay-max-/p/"Error" /> <param name="LevelMax" value=https://www.cnblogs.com/bay-max-/p/"Error" /> </filter> </appender> <!-- Fatal 將日志以回滾檔案的形式寫到檔案中 --> <appender name="RollingFileFatal" type="log4net.Appender.RollingFileAppender"> <!-- 日志檔案存放位置,可以為絕對路徑也可以為相對路徑 --> <file value=https://www.cnblogs.com/bay-max-/p/"Log\\Fatal\\" /> <!-- 將日志資訊追加到已有的日志檔案中--> <appendToFile value=https://www.cnblogs.com/bay-max-/p/"true" /> <param name="MaxFileSize" value=https://www.cnblogs.com/bay-max-/p/"10240"/> <param name="MaxSizeRollBackups" value=https://www.cnblogs.com/bay-max-/p/"100"/> <!-- 最小鎖定模式,以允許多個行程可以寫入同一個檔案 --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!-- 指定按日期切分日志檔案 --> <rollingStyle value=https://www.cnblogs.com/bay-max-/p/"Date" /> <!-- 日志檔案的命名規則 --> <datePattern value=https://www.cnblogs.com/bay-max-/p/"yyyy-MM-dd_HH'.log'" /> <!-- 當將日期作為日志檔案的名字時,必須將staticLogFileName的值設定為false --> <staticLogFileName value=https://www.cnblogs.com/bay-max-/p/"false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value=https://www.cnblogs.com/bay-max-/p/"【例外時間】:%date【執行緒ID】:%thread%newline【例外級別】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value=https://www.cnblogs.com/bay-max-/p/"Fatal" /> <param name="LevelMax" value=https://www.cnblogs.com/bay-max-/p/"Fatal" /> </filter> </appender> <logger name="RollingLogFileAppender"> <level value=https://www.cnblogs.com/bay-max-/p/"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=https://www.cnblogs.com/bay-max-/p/"ALL" /> 按日期切分日志檔案,并將日期作為日志檔案的名字 <appender-ref ref="RollingFileAppenderNameByDate" /> </root>--> </log4net> </configuration>
這個分類分等級了
改為始終復制 運行專案進行日志使用 就會發現在專案檔案夾下\bin\Debug\net6.0發現log檔案夾
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/482132.html
標籤:.NET Core
下一篇:返回列表