asp.net webapi 解决log4net自动生成空文件的问题
.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....

浙公网安备 33010602011771号