如何使用 log4net 以日期为文件名输出

最近在研究log4net的使用,发现大多数资料都只告诉我们一些简单的应用,没有详细的使用教程,很多很常用的功能都没有相关资料。

比如:我想使用RollingFileAppender以日期为日志文件名,网上提供最多的做法就是:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">   
  <file value="Logs/" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <datePattern value="yyyy-MM-dd&quot;.log&quot;" />
  <maxSizeToRollBackups value="10" />
  <maximumFileSize value="3000kb" />
  <staticLogFileName value="false" />
  <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%L] - %m%n" />
   </layout>
</appender>

配置后可以日期名输出文件名,但是也会生成重复日期的文件名,比如:2012-03-20.log,也会生成2012-03-20.log2012-03-20.log, 并且不能写入的日志内容,这样的结果肯定不是我们想要的。

后来又继续研究源码查找资料,才发现要达到这样的目的,其实很简单,只需要将上面 的file配置项按下面这样配置就好了:

<file type="log4net.Util.PatternString" value="Logs/%date{yyyy-MM-dd}.log" />

其中 %date 是 log4net.Util.PatternString 里约定的日期输出,{yyyy-MM-dd} 就是我们熟悉的日期格式输出了

当然<staticLogFileName value="true" />按默认配置就好了,完整的配置如下:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
  <file type="log4net.Util.PatternString" value="Logs/%date{yyyy-MM-dd}.log" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <datePattern value="yyyy-MM-dd" />
  <maxSizeToRollBackups value="10" />
  <maximumFileSize value="3000kb" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%L] - %m%n" />
   </layout>
</appender>

然后再根据 《如何使用 log4net 日志框架》,启动应用程序看看,是不是已经是日期作为日志文件名输出了!

文章出处:http://www.ruyhouse.com/Article/37

时间: 2024-11-01 04:08:51

如何使用 log4net 以日期为文件名输出的相关文章

c#代码01--控制台的简单输入与输出及日期的格式输出

/* 使用ReadLine()完成控制台的输入输出内容 */ using System; namespace Test { class Test1 { static void Main(string[] args){ Console.Write("请输入:");//输出 请输入 且不换行 string read = Console.ReadLine();//将输入内容赋值到变量read Console.Write("您输入的内容为:");//控制台输出 您输入的内容

Log4net系列一:Log4net搭建之文本格式输出

Log4net简介 前言 项目开发中,记录项目日志是必须的,如果非要说日志的重要性(日志可看做,飞机的黑匣子,或者汽车的行车记录仪),根据等级进行记录,方便我们排查相关问题,以后项目运维中,也方便很多.基本上我们进入一家公司,开发你从事什么岗位,公司产品或项目的框架都已经搭建好,我们有时候进行改版,根据业务延伸框架,记录日志基本都是我们自己去调用封装的方法.今天我们就对Log4net进行一下学习,Log4net可以做到:1.邮箱发送日志:2.记录到数据库:3.生成记事本文件.本章Log4net学

log4net 动态设定日志文件名

参考文章: http://blog.csdn.net/haoxiaozigang1/article/details/16343303 通过这个篇文章的方法,只能修改文件的路径,文件名并没有修改 参考文章: http://blog.csdn.net/yangchun1213/article/details/6580014 我修改了一下代码: var repository = LogManager.GetRepository(); var appenders = repository.GetAppe

动态修改log4net组件的日志文件名

最近项目使用到log4net来记录日志,当然二话不说先到cnblogs上查看一下各位高手关于log4net的教程和心得主要参看了摩诘 的Log4Net使用指南 (确实是非常好的log4net的入门指南),在此篇文章的评论中@所罗门 有个问题可能摩诘比较忙没有时间去是实验和解答,问题如下:如果我在配置文件里不设定Appender的File,即删除了<param name="File" value="log-file.txt" /> 一行信息,我想要在程序运

Linux日期时间显示输出

1.输出当前年月日 echo $(date +%F) 2014-02-21 2.输出当前时间(时分) echo $(date +%R) 12:45 3.输出当前时间(时分秒) echo $(date +%T) 12:52:51 4.输出星期 echo $(date +%A) 星期五 5.组合输出日期时间 5.1输出年月日 echo $(date +%Y/%m/%d) 2014/02/21 %Y参数: 年 %m参数: 月 %d参数: 日 5.2输出时分秒 echo $(date +%H:%M:%S

log4net按照不同的级别输出到不同文件

? 配置目标: 1)一个文件记录全部级别的日志: 2)记录某一级别的日志(使用LevelRangeFilter进行级别的过滤). ? Eg: <log4net> ??<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> ????<layout type="log4net.Layout.PatternLayout"> ?

日期的格式化输出

//将一个日期/时间对象格式化为表示某个国家地区的日期/时间字符串 /** * DateFormat: 格式化日期的工具类. * DateFormate 本身是一个抽象类. * * 1. 若只希望通过 DateFormat 把一个 Date 对象转为一个字符串, 则可以通过 DateFormat 的工厂方法来获取 DateFormat 对象 * 2. 可以获取只格式化 Date 的 DateFormat 对象: getDateInstance(int style, Locale aLocale)

利用bat复制当天生成的以日期为文件名的sql文件

1.利用SqlServer的自动备份功能,将数据自动备份,备份出的文件格式如下: db_backup_2010_01_27_0930.bak 2.编辑bat脚本 @echo off echo %date:~0,4%%date:~5,2%%date:~8,2% xcopy /e d:\backup_db\dbbackup%date:~0,4%%date:~5,2%%date:~8,2%*.bak h:\backup_dbpause 注释: %date:~0,4% 取date文件,从第0位开始往后取

Log4Net可以根据不同的类容输出到不同的文件夹下面

1 配置文件log4net_dcs.config <configuration> <configSections> <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> </configSections> <appSettings> </appSettings> <log4net> <