log4net根据业务需求实时变更输出日志文件名

2023-10-30

log4net.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net debug="false">
    <logger name="Log">
      <level value="ERROR" />
      <appender-ref ref="ColoredConsoleAppender" />
    </logger>
    <logger name="logsystem">
      <level value="ALL" />
      <appender-ref ref="ColoredConsoleAppender" />
      <appender-ref ref="RollingFileAppender" />
    </logger>
    <logger name="logdata">
      <level value="ALL" />
      <appender-ref ref="DataRollingFileAppender" />
    </logger>
    <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
      <mapping>
          <level value="ERROR" />
          <foreColor value="White" />
          <backColor value="Red, HighIntensity" />
      </mapping>
      <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%thread] [%-5level] %message%newline" />
      </layout>
    </appender>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="log.txt" />
        <appendToFile value="true" />
        <rollingStyle value="Size" />
        <maxSizeRollBackups value="10" />
        <maximumFileSize value="100KB" />
        <staticLogFileName value="true" />
        <datePattern value="yyyyMMdd-HHmm" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread][%-5level] %message%newline" />
        </layout>
    </appender>
     <appender name="DataRollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="data_{0}.log" />
        <appendToFile value="true" />
        <rollingStyle value="Size" />
        <maxSizeRollBackups value="10" />
        <maximumFileSize value="10GB" />
        <staticLogFileName value="true" />
        <datePattern value="yyyyMMdd-HHmm" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%message%newline" />
        </layout>
    </appender>
  </log4net>
</configuration>

配置有2个Logger, logsystem 和 logdata

其中DataRollingFileAppender文件名根据需要填充

填充代码

        public static void ResetLogConfig(string dataFileName)
        {
            var xmlFmt = File.ReadAllText("log4net.config", encoding:System.Text.Encoding.UTF8);
            var xmlStr = string.Format(xmlFmt, dataFileName);
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xmlStr);
            XmlNode node = doc.SelectSingleNode("/configuration/log4net");
            log4net.Config.XmlConfigurator.Configure(node as XmlElement);
            _LogSystem = LogManager.GetLogger("logsystem");
            _LogData = LogManager.GetLogger("logdata");
        }

Mark, 不要忘记了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

log4net根据业务需求实时变更输出日志文件名 的相关文章

随机推荐