|zyciis| Log4.NET 现在生成每天一个日志OK了,那如何让他日志超过指定大小时拆分呢?他的MaxFileSize无效

zyciis154 2010-09-10 04:58:16

<log4net>
<root>
<debug value="false" />
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--日志文件路径-->
<!--相对路径,在项目的根目录下-->
<!--以最后一个路径为准-->
<param name="File" value="Upload\\Logs\\"/>
<param name="AppendToFile" value="true" />
<!--可以为:Once|Size|Date|Composite-->
<!--Composite为Size和Date的组合-->
<param name="RollingStyle" value="Date" />
<!--当备份文件时,为文件名加的后缀-->
<!--后缀为*.txt时,例:AX.txt_2008-07-24.PxP 应该是程序上的一个bug-->
<!--后缀为*.TXT时,例:AX.txt_2008-07-25.TXT-->
<param name="DatePattern" value="yyyyMMdd".log"" />
<!--置为true,当前最新日志文件名永远为file节中的名字-->
<param name="StaticLogFileName" value="false" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaxFileSize" value="10240" /><!--这两个好像无效-->
<layout type="log4net.Layout.PatternLayout">
<!--输出样式-->
<param name="ConversionPattern" value="Data:%d%nthread:%t%nLevel:%p%nClass:%c%nFile:%F%nLine:%L%nMessage:%m%n%n"/>
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="WARN" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
</log4net>

上面的配置,已经可以每天生成一个日志文件
但我想要是日志超过指定大小的时候进行拆分
所以配置了
MaxSizeRollBackups
MaxFileSize
这两个属性,但没有效果,我的日志20+MB了还是没有拆分
我想要的结果为
20100909.log
20100909_1.log //当上面的日志文件大于10M的时候进行折分
20100910.log


万分感谢
...全文
632 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoupin 2010-09-12
  • 打赏
  • 举报
回复
学习学习
zyciis154 2010-09-11
  • 打赏
  • 举报
回复
---------UP
zyciis154 2010-09-10
  • 打赏
  • 举报
回复
根据楼上的那个网面,我发现就
有区别
<param name="RollingStyle" value="Data" />
=》
<param name="RollingStyle" value="Composite" />
然后以下是我的设置
但还是没有拆分日志

<log4net>
<root>
<debug value="false" />
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--日志文件路径-->
<!--相对路径,在项目的根目录下-->
<!--以最后一个路径为准-->
<param name="File" value="Upload\\Logs\\"/>
<param name="AppendToFile" value="true" />
<!--可以为:Once|Size|Date|Composite-->
<!--Composite为Size和Date的组合-->
<param name="RollingStyle" value="Composite" />
<!--当备份文件时,为文件名加的后缀-->
<!--后缀为*.txt时,例:AX.txt_2008-07-24.PxP 应该是程序上的一个bug-->
<!--后缀为*.TXT时,例:AX.txt_2008-07-25.TXT-->
<param name="DatePattern" value="yyyyMMdd".log"" />
<!--置为true,当前最新日志文件名永远为file节中的名字-->
<param name="StaticLogFileName" value="false" />
<param name="MaxSizeRollBackups" value="-1" />
<param name="MaximumFileSize " value="1MB" />
<layout type="log4net.Layout.PatternLayout">
<!--输出样式-->
<param name="ConversionPattern" value="Data:%d%nthread:%t%nLevel:%p%nClass:%c%nFile:%F%nLine:%L%nMessage:%m%n%n"/>
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
</log4net>

谢谢
wuyq11 2010-09-10
  • 打赏
  • 举报
回复
RollingLogFileAppender描述记录日志的方式,这代表日志将被写在一个文件,该文件当满的话会自动增加.
参考
yongyinmg 2010-09-10
  • 打赏
  • 举报
回复
在<appender></appender>里加
<maximumFileSize value="20MB" />
gongsun 2010-09-10
  • 打赏
  • 举报
回复
logger是负责日志的记录者
appender提供记录的介质
layout负责把记入的内容格式化
filter负责把内容进行筛选

可以说,整个过程就是一个日志流水线,每个成员负责其中的一个环节
logger发出记录信息,appender接到信息,根据内部的layout配置对记录信息格式化,根据filter决定此信息是否被过滤掉,最后,将其序列化



因此,logger的appender-ref就是定义说,LOGGER要找谁去将内容写入磁盘,流或其他介质,因此,十分重要吧
既然是ref引用,那肯定要定义这个被引用的appender对象了呀

每个appender都代表了一个输出介质
name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质
log4net支持的appender类型有十几种,最常用的有rollingFileAppender,AdoNetAppender,EventLogAppender,FileAppender,分别把日志记入文件,系统日志和数据库
除此之外,appender内的其他参数都用param标记,以key/value形式定义于其内
这里有个小提示,每一个appender,log4net并没有在文档中提出他们需要哪些参数,那么,我们怎么知道呢?
原来,这些param的名称,你可以直接查对应的appender类的属性名即可,例如,使用EventLogAppender时,通过查看类的属性,我们知道其有
LogName,ApplicationName属性,那么,意味着,你可以直接在这个APPENDER的param里加入以下内容:
<param name="LogName" value="Application" />
<param name="ApplicationName" value="log4netTest" />

定义了appender的NAME及TYPE属性,以及使用param为其指定参数后,一个appender就建立了,你可以使用他的名字在LOGGER的<appender-ref中去 引用它,那么,引用它的LOGGER在写入日志时,就是写到了APPENDER中定义的介质中去了
一个LOGGER可以引用多个APPENDER,其结果是,同一个日志,被同时记录到多个介质中去 ,便如,同时发邮件,写入系统日志,发送到远程主机.不过,虽然可以这样做,但是还是要小心,因为,会对性能有一定的影响,除非你需要,否则,不要乱用此功能


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hu8hong9/archive/2008/08/20/2800036.aspx
gongsun 2010-09-10
  • 打赏
  • 举报
回复
杯具,我记得好像有什么 日志名的参数。

不记得了,目前我们就是写在一个里面。

guyehanxinlei 2010-09-10
  • 打赏
  • 举报
回复
有时间帮你研究一下

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧