Log4net使用(一)

转自:http://blog.csdn.net/much0726/article/details/3725563

转自:https://q.cnblogs.com/q/52302/

log4net,既要按日期分割日志文件,又要按文件大小分割。

--------------------------------------------------------------------

按照日期来分割日志的配置是这样:

<!--按日期分割日志文件 一天一个-->
<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。

怎么还要加哪些属性?

-------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4Net" />
</configSections>
   <log4net>
     <!--配置日志的级别,低于此级别的就不写到日志里面去
       OFF、FATAL、ERROR, WARN, INFO, DEBUG, ALL
       -->
     <root>
       <level value="DEBUG" />
       <appender-ref ref="LogFileAppender" />
       <appender-ref ref="ConsoleAppender" />
     </root>

     <logger name="WebLogger">
       <level value="ERROR" />
     </logger>

     <!--输出到文件-->
     <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
       <param name="File" value="Log/" />
       <param name="AppendToFile" value="true" />
       <!-- 切割最多文件数 -1表示不限制产生日志文件数-->
       <param name="MaxSizeRollBackups" value="-1"/>
       <!-- 每个文件的大小限制  -->
       <param name="MaximumFileSize" value="10MB"/>
       <!-- RollingStyle Composite 综合  Size 按大小  Date 按时间 -->
       <param name="RollingStyle" value="Composite" />
       <param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" />
       <param name="StaticLogFileName" value="false" />
       <layout type="log4net.Layout.PatternLayout,log4net">
         <param name="Header" value="
----------------------application startup--------------------------
" />
         <param name="Footer" value="
 ----------------------application shutdown--------------------------
" />
         <param name="ConversionPattern" value="%d [%t] %-5p %c - (%line)  %m%n" />
       </layout>

       <filter type="log4net.Filter.LevelRangeFilter">
         <param name="LevelMin" value="ALL" />
        <param name="LevelMax" value="OFF" />
       </filter>
     </appender>
     <!--输出控制台-->
     <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender,log4net">
       <layout type="log4net.Layout.PatternLayout,log4net">
         <param name="ConversionPattern" value="%d [%t] %-5p %c - (%line) %m%n" />
       </layout>
     </appender>
   </log4net>
</configuration>

------------------------------------------------------

[C#]Log4net中的RollingFileAppender解析

------------------------------------------------------

Log4日志组件的应用确实简单实用,在比较了企业库和Log4的日志功能后,个人觉得Log4的功能更加强大点.补充说明下,我使用的企业库是2.0版本,Log4net是1.2.1版本的.

在Log4net的应用上,已经有人做了说明分析了,在本文中,主要解析下Log4net中的RollingFileAppender的应用.

主要参考了Log4net的帮助文档.在项目中的log4net-1.2.10/doc文件下有.

RollingFileAppender主要是基于FileAppender构建的,很多属性方法都是继承于FileAppender,所以在选项设置上,也有许多是相同的.

下面的例子使日志文件名为log.txt,日志文件名是以文件大小进行变换的,如果旧日志文件大小到100KB时,就会变换文件名为log.txt.1,log.txt.2,log.txt.3...,一直到10为止

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <!--日志文件名-->
    <file value="log.txt"/>
    <!--是否在文件中追加-->
    <appendToFile value="true"/>
    <!--按照文件的大小进行变换日志文件-->
    <rollingStyle value="Size"/>
    <!--最大变换数量-->
    <maxSizeRollBackups value="10"/>
    <!--最大文件大小-->
    <maximumFileSize value="100KB"/>
    <!--日志文件名是否为静态-->
    <staticLogFileName value="true"/>
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
    </layout>
</appender>

下面的例子以时间周期变换日志文件名,每分钟都改变日志的文件名,日志文件名为logfileyyyyMMdd-HHmm,这里补充说明下,如果要在这个文件名后面加上.log后缀,必须使用转义字符,比如<datePattern value="yyyyMMdd-HHmm" />

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
        <!--日志文件名开头-->
    <file value="logfile" />
    <!--是否追加到文件-->
    <appendToFile value="true" />
    <!--变换的形式为日期-->
    <rollingStyle value="Date" />
    <!--日期的格式-->
    <datePattern value="yyyyMMdd-HHmm" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>

下面的例子综合使用使用日期和文件大小变换日志文件名

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <!--日志文件名开头-->
    <file value="logfile" />
    <!--是否追加到文件-->
    <appendToFile value="true" />
    <!--混合使用日期和文件大小变换日志文件名-->
    <rollingStyle value="Composite" />
    <!--日期的格式-->
    <datePattern value="yyyyMMdd" />
    <!--最大变换数量-->
    <maxSizeRollBackups value="10" />
    <!--最大文件大小-->
    <maximumFileSize value="1MB" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>

下面例子是在每次程序运行的时候,都会备份原先的日志文件,当运行的日志文件大于50G的时候才会变换日志文件名

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <!--日志文件名-->
    <file value="logfile.txt" />
    <!--不追加到原文件-->
    <appendToFile value="false" />
    <!--以日志文件大小变换文件名-->
    <rollingStyle value="Size" />
    <!--最大变换数量,-1为不限制-->
    <maxSizeRollBackups value="-1" />
    <!--最大文件大小-->
    <maximumFileSize value="50GB" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>

下面是RollingFileAppender类中的部分Public Instance Properties(公共属性)的说明,没有全部测试,难免谬误,如果你知道,请不要吝啬告写。
CountDirection : 定义当前文件是最小编号的文件还是最大编号的文件。默认为-1,总是以更小的编号。
datePattern : DateFormatter日期格式,string类型。
Encoding : 就是文件的编码,默认为Default,就是程序本身的编码了。
FilterHead : 分割符头部。
ImmediateFlush : 表示是否立即输出到文件,布尔型的。
LockingModel : 文件锁类型,RollingFileAppender本身不是线程安全的,如果在程序中没有进行线程安全的限制,可以在这里进行配置,确保写入时的安全。有两中类型:FileAppender.ExclusiveLock 和 FileAppender.MinimalLock
Name
 : 设置本Appander的名称。
SecurityContext : 比较少应用,对日志进行加密只类的,使用SecurityContextProvider转换。(对日志的保密要求比较高的时候应该可以应用上吧,Log4考虑的还挺周全)
Threshold : 设置内容级别的,比如:DEBUG,INFO等等。

在Log4net的配置中有两种方法是等价的:
<param name="File" value="log.txt" /> 和
<File value="log.txt" />
个人更倾向后者。在一些数据库上的应用时还有许多Param呢。

小结
Log4的应用远不止这些,帮助文件也是很详尽的,在程序级还是配置级都有相关例子。在整理了一个RollingFileAppender就花了我不少工夫。如果有机会接触到其他的内容,我会继续整理出来。

时间: 2024-10-25 16:42:15

Log4net使用(一)的相关文章

log4net 使用总结- (2)在ASP.NET MVC 中使用

log4net在ASP.NET MVC中的配置,还有一种配置方式,即不在web.config中,而是单独新建一个log4net.config 在根目录下 第一.引用log4net.dll 第二.在站点根目录下增加log4net.config <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="

(转)非常完善的Log4net详细说明

转自:http://www.cnblogs.com/zhangchenliang/p/4546352.htmlhttp://www.cnblogs.com/zhangchenliang/p/4546352.html (转)非常完善的Log4net详细说明 1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是介绍如何在Visual Studio2008中使用log4net快速创

Log4Net 之初体验

今天试了一下关于日志的一个插件--Log4Net 关于这个插件就不过多描述了,有很多人用,也挺好用比较方便,所以在此记录下使用过程. 一.建一个mvc 空网站 名字叫 Log4NetTest 二.下载log4net.dll 并添加引用,也可以用NuGet在线安装 三.在Models  文件夹下建立MyErrorAttribute 大概就是把所有的错误丢进队列里面去,并且继承 HandleErrorAttribute 代码就如下: using System; using System.Collec

log4net 既要按日期分割日志文件,又要按文件大小分割。

<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender"> <file value="log\debug\"/> <appendToFile value="true" /> <rollingStyle value="Composite" /> <datePatte

Log4Net 帮助类

//[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)] namespace LogNet { /// <summary> /// Author :TonyKit /// Date :2016-09-25 /// Description:日志辅助类 /// </summary> public class Logger { #region [ 单例模式

log4net使用简介

说明:本程序演示如何利用log4net记录程序日志信息.log4net是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中.并且我们还可以记载控制要记载的日志级别,可以记载的日志类别包括:FATAL(致命错误).ERROR(一般错误).WARN(警告).INFO(一般信息).DEBUG(调试信息).要想获取最新版本的

Log4Net使用详解

说明自从上次在2008年在博客上发表过有关log4net的用法介绍文章之后(网址:http://blog.csdn.net/zhoufoxcn/archive/2008/03/26/2220533.aspx),有不少朋友在博文下留言询问一些细节,现在就一些比较普遍的问题做一些稍微深入的解答,希望大家满意.首先说明一点的是,log4net解决的问题是提供一个记录日志的框架,它提供了向多种目标写入的实现,比如利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包

Log4Net 在多层项目中的使用小记

原文地址:http://www.cnblogs.com/zdh8675/p/3645556.html 这几天刚好在调整一个项目,把一些自己不是很清楚的东西先试验一下,这篇文章主要是对我在项目中需要使用Log4Net的一些记录.网上有很多相关的教程,但是各有各的说法,我结合我自己这个项目的需要,首先,项目是分多层的,假如每一层都需要加入日志记录,那该怎么办呢,下面是我的一些操作步骤,记录出来和大家分享一下,不足之处希望大家多拍板砖多多指教. 这个截图是我的当前项目的层次结构,首先在Common层先

将Log4Net 日志保存到mongodb数据库实践

log4net的大名早有耳闻,一直没真正用过,这次开发APP项目准备在服务端使用log4net. 日志的数据量较大,频繁的写数据库容易影响系统整体性能,所以独立将日志写到mongodb数据库是不错的选择.---经过2天的摸索,总结出本文档. github有个开源项目log4mongo-net,另一位斯克迪亚作者根据开源项目又做了修改http://skyd.sinaapp.com/archives/1282. 所以直接拿斯克迪亚的代码来使用. 1.将log4net和mongodb驱动升级为最新版本

log4net RemotingAppender 的配置

Before you even start trying any of the alternatives provided, ask yourself whether you really need to have multiple processes log to the same file, then don't do it ;-). FileAppender offers pluggable locking models for this usecase but all existing