asp.net webapi 整合log4net, 以及解決自動生成空檔案的問題
阿新 • • 發佈:2020-11-27
.net framework 整合log4net,以每日生成日誌檔案,執行一段時間後發現他會自動生成空檔案, 自己想要的效果是隻有輸入了日誌時,才自動建立檔案。
1- 首先nuget引用 log4net
2- web.config 配置log4net
<configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <logger name="LogInfo"> <level value="ALL" /> <appender-ref ref="FileAppender" /> </logger> <appender name="FileAppender" type="YourNameSpace.MyFileAppender"> <!--YourNameSpace:你自己類的命令空間 --> <file value="Log/" /> <!--生成的資料夾在Log資料夾下(相對路徑) --> <preserveLogFileNameExtension value="true" /> <maxSizeRollBackups value="10" /> <appendToFile value="true" /> <rollingStyle value="Date" /> <datePattern value=""Logs_"yyyyMMdd".txt"" /> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> </layout> </appender> </log4net> </configuration>
3- 自定義MyFileAppender類 重寫基類的OpenFile方法
namespace YourNameSpace { public class MyFileAppender : log4net.Appender.RollingFileAppender { private bool isFirstTime = true; protected override void OpenFile(string fileName, bool append) { if (isFirstTime) { isFirstTime = false; return; } base.OpenFile(fileName, append); } } }
4- Global.asax.cs
public class WebApiApplication : System.Web.HttpApplication { protected void Application_Start() { //log4net配置 log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("~/Web.config"))); GlobalConfiguration.Configure(WebApiConfig.Register); } }
5-定義LogHelper類
public class LogHelper { private static readonly log4net.ILog log = log4net.LogManager.GetLogger("LogInfo"); public static void WriteInfo(string msg) { log.Info(msg); } }
OK....