zoukankan      html  css  js  c++  java
  • 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="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />
          <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....

  • 相关阅读:
    php之aop实践
    PHP一个类AOP的实现
    PHP系列学习之AOP
    PVE上安装黑裙辉6.2
    安装proxmox VE(PVE)教程
    x-forwarded-for的深度挖掘
    nginx的配置总结,有时间自己整理
    openresty入门文章(笔者自用)
    pve apt-get update error 升级报错-文章未完工和验证
    pve proxmox 常见问题,perl warning
  • 原文地址:https://www.cnblogs.com/stephenzengx/p/14048999.html
Copyright © 2011-2022 走看看