首页 新闻 搜索 专区 学院

不让log4net自动生成没有调用过的日志目录及文件?

0
悬赏园豆:10 [待解决问题]

如果只调用xxxErrorLogger写入一次,这时在Logs\\Debug同时会生成一个空的.txt文件。

希望在调用xxxErrorLogger时,配置文件不要根据xxxDebugLogger生成Debug目录及文件。

log4net部分配置文件:

<logger name="xxxErrorLogger" additivity="false">
  <level value="ALL" />
  <appender-ref ref="xxxErrorAppender" />
</logger>

<logger name="xxxDebugLogger" additivity="false">
  <level value="ALL" />
  <appender-ref ref="xxxDebugAppender" />
</logger>

<!--Error自定义日志配置-->
<appender name="xxxErrorAppender" type="log4net.Appender.RollingFileAppender">
  <param name="File" value="Logs\\Error\\" />

  ......
</appender>

<!--Debug自定义日志配置-->

<appender name="xxxDebugAppender" type="log4net.Appender.RollingFileAppender">
  <param name="File" value="Logs\Debug\\" />

  ......
</appender>

小草旁的大树的主页 小草旁的大树 | 初学一级 | 园豆:199
提问于:2015-11-04 15:58
< >
分享
所有回答(2)
0

运行就会生成,除非改源码,或者所有的日志都记在一个文件,不是有个ALL/*么?

清风君 | 园豆:272 (菜鸟二级) | 2015-11-05 11:52

已经测试过,就算把xxxDebugLogger的level修改成Debug,只调用xxxErrorLogger。xxxDebugLogger配置的目录及.TXT文件也会生成。

支持(0) 反对(0) 小草旁的大树 | 园豆:199 (初学一级) | 2015-11-05 12:21
1

log4net本身貌似没有配置的地方

http://blog.csdn.net/zuoluo11/article/details/52316387

重写方法,日志释放锁定后,检查文件并删除

using log4net.Appender;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

namespace DebugLog
{
    public class MinimalLockDeleteEmpty : FileAppender.MinimalLock
    {
        public override void ReleaseLock()
        {
            base.ReleaseLock();

            var logFile = new FileInfo(CurrentAppender.File);
            if (logFile.Exists && logFile.Length <= 0)
            {
                logFile.Delete();
            }
        }
    }
}

 

zuoluo11 | 园豆:8 (初学一级) | 2016-08-25 17:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册