按照日期来分割日志的配置是这样:
<!--按日期分割日志文件 一天一个-->
<appender name="LogFileAppenderByDate" type="log4net.Appender.RollingFileAppender" >
<!--是否续写-->
<param name="AppendToFile" value="true" />
<!--最小锁定模型以允许多个进程可以写入同一个文件-->
<param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
<param name="StaticLogFileName" value="true" />
<!--保存路径-->
<param name="File" value="C:\Log\\" />
<param name="DatePattern" value="yyyy-MM-dd.LOG" />
<param name="StaticLogFileName" value="false" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
</layout>
</appender>
按日志容量分割日志文件的配置是这样:
<!--按日志容量分割日志文件 10KB一个-->
<appender name="LogFileAppenderBySize" type="log4net.Appender.RollingFileAppender" >
<!--是否续写-->
<param name="AppendToFile" value="true" />
<!--最小锁定模型以允许多个进程可以写入同一个文件-->
<param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
<param name="StaticLogFileName" value="true" />
<!--按照文件的大小进行变换日志文件-->
<param name="RollingStyle" value="Size" />
<param name="File" value="LogData\\log.txt" />
<!--单个文件最大数量 好像只有在 RollingStyle=Size分割时有效-->
<param name="MaximumFileSize" value="20KB"/>
<!--保留的log文件数量 超过此数量后 自动删除之前的 好像只有在 按Size分割时有效-->
<param name="MaxSizeRollBackups" value="2" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="发生时间:%d %n事件级别:%level %n相关类名:%c%n程序文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
</layout>
</appender>
但是,我需求是,按照日期来写日志,并且每天当中,还要按照文件大小分割日志。
比如:
2013-7-15.txt
2013-7-15.txt.1
2013-7-15.txt.2
2013-7-15.txt.3
每个日志大小都不大于1000KB。
怎么还要加哪些属性?
参考Log4net同时按照日期和大小生成RollingFile和访问Sybase数据库配置(原创):
<rollingStyle value="Composite" /> <datePattern value=".yyyy_MM_dd" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="10000" /> <staticLogFileName value="false" />
dudu,用了你这种方法,官方的意思也是这样,但是,程序的效果是,文件名还是没有以时间命名,一定要写成以下这种形式的才可以。
就是要以<param name="key" value="value" />这种形式,目前我还不知道为什么,一定要这样子写。
<param name="file" value="C:\DateAndSizeLog\JwtWebLog" />
<param name="AppendToFile" value="true" />
<!--最小锁定模型以允许多个进程可以写入同一个文件,设置后会有性能问题,一般不用设置-->
<param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
<param name="StaticLogFileName" value="true" />
<param name="DatePattern" value="yyyy-MM-dd'.txt'" />
<param name="StaticLogFileName" value="false" />
<param name="MaximumFileSize" value="10KB" />
<param name="MaxSizeRollBackups" value="-1" />
<param name="RollingStyle" value="Composite" />
@dotnetgeek: 如果想知道真正的原因,需要看log4net的源代码
@dudu: 怎么我经过写Demo试验之后,发现很多文章都是错误的,比如:
<!--最小锁定模型以允许多个进程可以写入同一个文件-->
<param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
我设置了之后,2个进程也无法同时写入一个文件。。
@dotnetgeek: 建议通过博客分享出来,经过实践检验的知识更具价值
@dudu: dudu,我试验出来了。
<param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
在使用RollingFileAppender的方式不支持多进程同時写一個日志文件;
使用FileAppender才可以;
官方网站的示例代码也是使用FileAppender的,而且官方也有FAQ,但是国内转载的文章,都把LockingModel用在RollingFileAppender上了。迟点我会写博客的。
@dotnetgeek: 好,期待你的分享!
<appender name="RollingLogFile" type="log4net.Appender.RollingFileAppender">
<param name="File" value="D:/log4/"/>
<param name="AppendToFile" value="true"/>
<param name="RollingStyle" value="Composite"/>
<param name="DatePattern" value="yyyy-MM-dd".txt""/>
<param name="PreserveLogFileNameExtension" value="true"/>
<param name="StaticLogFileName" value="false"/>
<param name="MaximumFileSize" value="1000KB"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date %-5level %logger message:%m%n"/>
</layout>
</appender>
<param name="MaximumFileSize" value="1000KB"/> 直接 <param name="MaximumFileSize" value="1MB"/> ,为啥整个 1000KB
1 <?xml version="1.0" encoding="utf-8"?> 2 <configuration> 3 <configSections> 4 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4Net" /> 5 </configSections> 6 7 <log4net> 8 <!--配置日志的级别,低于此级别的就不写到日志里面去 9 OFF、FATAL、ERROR, WARN, INFO, DEBUG, ALL 10 --> 11 <root> 12 <level value="DEBUG" /> 13 <appender-ref ref="LogFileAppender" /> 14 <appender-ref ref="ConsoleAppender" /> 15 </root> 16 17 <logger name="WebLogger"> 18 <level value="ERROR" /> 19 </logger> 20 21 <!--输出到文件--> 22 <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net"> 23 <param name="File" value="Log/" /> 24 <param name="AppendToFile" value="true" /> 25 <!-- 切割最多文件数 -1表示不限制产生日志文件数--> 26 <param name="MaxSizeRollBackups" value="-1"/> 27 <!-- 每个文件的大小限制 --> 28 <param name="MaximumFileSize" value="10MB"/> 29 <!-- RollingStyle Composite 综合 Size 按大小 Date 按时间 --> 30 <param name="RollingStyle" value="Composite" /> 31 <param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" /> 32 <param name="StaticLogFileName" value="false" /> 33 <layout type="log4net.Layout.PatternLayout,log4net"> 34 <param name="Header" value="
----------------------application startup--------------------------
" /> 35 <param name="Footer" value="
 ----------------------application shutdown--------------------------
" /> 36 <param name="ConversionPattern" value="%d [%t] %-5p %c - (%line) %m%n" /> 37 </layout> 38 39 <filter type="log4net.Filter.LevelRangeFilter"> 40 <param name="LevelMin" value="ALL" /> 41 <param name="LevelMax" value="OFF" /> 42 </filter> 43 </appender> 44 45 <!--输出控制台--> 46 <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender,log4net"> 47 <layout type="log4net.Layout.PatternLayout,log4net"> 48 <param name="ConversionPattern" value="%d [%t] %-5p %c - (%line) %m%n" /> 49 </layout> 50 </appender> 51 52 </log4net> 53 </configuration>
直接复制过去用
不错。谢谢了。
请教一下,我希望生成如下格式的怎么弄?
2013-7-15-01.txt
2013-7-15-02.txt
2013-7-15-03.txt
@pengbg: 这样的格式,你搞出来了吗?
@谷仁儿: 搞出来撒,
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--日志路径-->
<param name= "File" value= "App_Log/"/>
<!--编码格式-->
<param name="Encoding" value="utf-8" />
<!--是否是向文件中追加日志-->
<param name= "AppendToFile" value= "true"/>
<!--允许随时删除日志-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--固定后缀-->
<PreserveLogFileNameExtension value="true" />
<!--log保留天数-->
<param name= "MaxSizeRollBackups" value= "10"/>
<!--日志文件名是否是固定不变的-->
<param name= "StaticLogFileName" value= "false"/>
<!--日志文件名格式为:2008-08-31.log-->
<param name= "DatePattern" value= "yyyy-MM-dd".log""/>
<!--日志根据日期和大小混合模式滚动-->
<param name= "RollingStyle" value= "Composite"/>
<!--不限制文件数-->
<param name="MaxSizeRollBackups" value="-1"/>
<!--每个文件大小限制-->
<maximumFileSize value="2MB"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="发生时间:%d %n内容: %n%m %n %n" />
</layout>
</appender>