log4net动态修改文件名【正规方法】

为什么说是正规呢?是因为还有不正规的方法

1.先说正规方法

  输出日志前,使用log4net提供的工具log4net.Util.PatternString来进行参数替换

在xml里面这样写

<file type="log4net.Util.PatternString" value="log\%property{fname}.log"/>

在c#里面这样写

log4net.GlobalContext.Properties["fname"] = m_siteId;
log4net.Config.XmlConfigurator.Configure();

*******注意*************************************

一定要去掉下面这句,否则可能导致程序死锁

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

static ILog logger;                

log4net.GlobalContext.Properties["fname"] = m_siteId;
log4net.Config.XmlConfigurator.Configure();

logger = LogManager.GetLogger("DEBUG");

logger.Debug("test");

 

  <log4net debug="true">  
    <root>  
      <level value="DEBUG" />  
      <appender-ref ref="RollingLogFileAppender" />  
    </root>  
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender" >
      <!-- <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> -->
      <file type="log4net.Util.PatternString" value="log\%property{fname}.log"/>
      <rollingStyle value="Date" />
      <param name="MaximumFileSize" value="10000KB" />
      <param name="Encoding" value="utf-8" />
      <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />  
      <param name="AppendToFile" value="true" />  
      <layout type="log4net.Layout.PatternLayout">  
      <conversionPattern value="[%date] %level [%thread][%c{1}:%line] - %m%n" />  
      </layout>  
    </appender>  
  </log4net>

2.不正规的方法 

  打开日志后,动态修改文件名字,不过这样做的缺点是会输出一个空白的修改前的日志文件,很不爽。

            var appenders = logger.Logger.Repository.GetAppenders();
            foreach (var app in appenders)
            {
                var ra = app as RollingFileAppender;
                ra.File = folder;
                ra.ActivateOptions();
            }

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值