Log4Net 生成多个文件、文件名累加解决方法

Log4Net 生成多个文件、文件名累加解决方法

项目中的WCF服务里采用Log4Net用来记录异常日志,但部署后,生成的日志会出现多个累加文件,如下图:

WCF是寄宿在IIS上,包含了5个SVC服务。打开日志文件,发现记录的引发异常的Thread ID都不一样,猜测是多线程读写日志文件,

配置信息里指定文件的被占用后,重新建立了新的日志文件,删除日志文件也会出现警告信息:

解决方法:

在appender节点里添加:

<param name="lockingModel"  type="log4net.Appender.FileAppender+MinimalLock" />

lockingModel 属性的详细信息可看 Log4Net SDK 中的描述。

很不解的是:type中 FileAppender+MinimalLock 为何要用 '+' 来做连接符,换成'.'的时候却不行。

 

完整Log4Net配置信息:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"/>
    </configSections>
    <log4net>
        <!--日志对象根设置-->
        <root>
            <!--定义Level级别,若没定义,默认为Debug-->
            <level value="ERROR"/>
            <!--定义日志对象使用的appender,通过appeder-ref来注册-->
            <appender-ref ref="LogFileAppender"/>
        </root>
        <!--定义具体的logger对象 通过调用LogManager.GetLogger(“wcflog”)函数,你可以检索具有该名字的日志。如果LogManager.GetLogger(…)打开的不是预定义的日志对象,则该日志对象会继承根日志对象的属性。知道了这一点,我们可以说,其实<logger>标签并不是必须的-->
        <logger name="wcflog" additivity="true">
            <!--additivity 是否确认子日志对象继承父日志对象的appender列表,默认为True:确认-->
            <!--注意优先级,优先级低的要放在后面-->
            <level value="INFO" />
            <level value="DEBUG"/>
        </logger>
        <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"  >
            <!--配置在root注册的appender-ref具体属性-->
            <param name="File" value="log//"/>
            <param name="StaticLogFileName" value="false" />
            <param name="DatePattern" value="yyyy-MM-dd.LOG" />
            <param name="AppendToFile" value="true"/>
            <!--按照文件的大小进行变换日志文件-->
            <param name="RollingStyle" value="Date" />
            <!--单个文件最大数量-->
            <param name="MaximumFileSize" value="1000KB"/>
            <!--保留的log文件数量 超过此数量后 自动删除之前的  -->
            <param name="MaxSizeRollBackups" value="100" />
            <!--最小锁定模型以允许多个进程可以写入同一个文件-->
            <param name="lockingModel"  type="log4net.Appender.FileAppender+MinimalLock" />
            <!--type属性,定义类型-->
            <layout type="log4net.Layout.PatternLayout">
                <!--定义日志会话(logger session)开始输出的文字-->
                <param name="Header" value="异常开始记录 :"/>
                <!--定义日志会话(logger session)结束输出的文字-->
                <!--<param name="Footer" value="[Footer]\r\n"/>-->
                <!--输出信息的模式: -->
                <param name="ConversionPattern" value="%n时间 : %d  线程ID:[%t] %-5p 当前对象名称:%c  - %m%n"/>
            </layout>
            <!--过滤器,只需要min和max之间的级别-->
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="DEBUG"/>
                <param name="LevelMax" value="ERROR"/>
            </filter>
        </appender>
    </log4net>
</configuration>

 

时间: 2024-09-13 00:01:33

Log4Net 生成多个文件、文件名累加解决方法的相关文章

【POI】对于POI无法处理超大xls等文件,官方解决方法【已解决】【多线程提升速率待定】

本次使用POI处理xlsx文件,莫名的遇到了一个无法逾越的问题. 总共71个xlsx文件,单个文件最大达到50M以上,71个xls文件摆在那里就有3-4G的大小.  在起始处理的时候,发现原本适用于正常大小的POI处理xls程序竟然屡次的报错GC outofmemory 的内存移除的问题. [当前状况] ①一个50M大小的xlsx文件,使用压缩文件打开,可以看到xml文件达到900M以上 ②一个50M大小以上的xlsx文件,单个工作簿,行数平均在15W行---40W之间,列数在64列左右 ③单方

nginx下无法访问中文文件名的解决方法

今天在网上寻找关于Nginx访问中文目录及文件名的解决方法,偶然看到qwqg的一篇文章!解决问题的思路很清晰,特转载过来与大家一起分享!该方法还没有亲自测试,所以不太确定是否真有用! 方法一: 搞了大半天nginx下无法访问中文文件名的问题,现在看来是secureCRT的问题?看来还是字符集的问题了.看来nginx不需要象apache那样要单独加载支持中文模块. 服务器端字符集如下[root@test]# localeLANG=en_US.UTF-8LC_CTYPE="en_US.UTF-8″L

解析PHP生成静态html文件的三种方法_php技巧

本文将介绍Php 生成静态html文件的三种方法 .1,下面使用模版的一个方法! 复制代码 代码如下: <?php $fp = fopen ("templets.html","a"); if ($fp){ $fup = fread ($fp,filesize("templets.html")); $fp2 = fopen ("html.shtml","w"); if ($fwrite ($fp2,$f

Ubuntu解压zip文件乱码的解决方法_Linux

前言 本文介绍的是Ubuntu解压zip文件乱码的解决方法,共有2种方式解决问题,下面话不多说,来一起看看吧 一.通过unzip行命令解压,指定字符集 unzip -O CP936 xxx.zip (用GBK, GB18030也可以) 有趣的是unzip的manual中并无这个选项的说明, unzip --help对这个参数有一行简单的说明. 二.在环境变量中,指定unzip参数,总是以指定的字符集显示和解压文件 /etc/environment中加入2行 UNZIP="-O CP936&quo

Linux系统递归生成目录中文件的md5的方法

  这篇文章主要介绍了Linux系统递归生成目录中文件的md5的方法,利用PHP脚本实现,需要的朋友可以参考下 linux下使用md5sum递归生成整个目录的md5 今天要用md5sum操作目录,递归生成目录下所有文件的md5值,结果发现它不支持递归操作于是写了个php脚本处理下 代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 3

手机用safari无法下载此文件原因及解决方法详解

ipad或者iphone上网,不管下载什么都提示safari无法下载此文件要怎么解决呢?其实原因是因为苹果设备自带浏览器safari不支持下载. 手机用safari无法下载此文件原因及解决方法 : 如果你要下载到AppStore里面买个iDownload软件或者越狱在cydia上安装个safari download plugin插件就可以下载了.

win8使用IE浏览器查看网页会出现自动下载HTML文件对话框的解决方法

  win8使用IE浏览器查看网页会出现自动下载HTML文件对话框的解决方法.大家都知道windows操作系统内置IE浏览器,Win8系统中很多用户会使用IE浏览器查看网页,通常网页会有很多的超链接可以点击进入下一个网页,不过有的Win8系统用户反馈点击后出现自动下载HTML文件的对话框,而不是打开网页,那么遇到这样的情况如何解决呢?本文教程小编分享几种解决方法,有需要的用户可以往下学习. 方法一: 1.按下WIN+R调出运行然后输入: regsvr32 msxml3.dll 回车; 2.重新打

win7无法共享xp文件夹的解决方法

  虽说win7系统目前有绝大部分的用户在使用,但对一些公司企业.事业单位还是普遍的存在着winXP系统,那么对于这些xp用户也遇到的问题越来越多,首先winxp停止更新,面临着黑客的入侵,其次一些系统的兼容性也会随着win7系统的更新而受到影响,这么最近有朋友向本站反映,在公司中win7电脑无法共享winXP中的文件,那么对于出现此问题我们应该如何解决呢?下面看河东小编就大家带来的解决方法! win7无法共享xp文件夹的解决方法 1.首先,我们点击打开win7旗舰版电脑的开始菜单,然后从开始菜

Win7系统RM视频文件损坏的解决方法

  大家现在观看的网络视频基本上都是以RM格式或RMVB格式存在,我们的win7系统电脑在使用的过程中有可能会遇到视频文件被损坏的情况,那么出现这样的情况大家的视频文件就无法观看,一些不知道如何解决的朋友就会比较着急,那么遇到这样的情况该怎么办呢,小编马上给大家说说这个解决方法吧! Win7系统RM视频文件损坏的解决方法如下: 1.要是大家在播放文件的时候被卡主,那么就可能是我们的RM视频被损坏了,大家直接跳过损坏的部分就可以了. 解决方法:大家可以去下载软件"rmfixit"对我们的