Log4Net.Config配置信息《转》
看了log4net的简单使用之一_log4net介绍 大家对log4net组件应该有了大概的了解,下面再近一步介绍其在项目中如何应用。
1.Logger
所有的记录器都必须实现 ILog 接口,该接口提供日志记录所需的大量方法。
public interface ILog : ILoggerWrapper
{
void Debug(...);
void Error(...);
void Fatal(...);
void Info(...);
void Warn(...);
bool IsDebugEnabled { get; }
bool IsErrorEnabled { get; }
bool IsFatalEnabled { get; }
bool IsInfoEnabled { get; }
bool IsWarnEnabled { get; }
}
通常情况下,我们通过 LogManager.GetLogger() 来获取一个记录器。LogManager 内部维护一个 hashtable,保存新创建 Logger 引用,下次需要时直接从 hashtable 获取其实例。
ILog log = LogManager.GetLogger(this.GetType());
log.Debug("aaaaaaaaaaaaaaa");
所有 Logger 的参数设置都直接或间接继承自 root,其继承关系类似 namespace。比如,名为 "MyLogger.X.Y" 参数设置继承自 "MyLogger.X"。当我们创建 "MyLooger.X.Y" 记录器时,会在配置文件找该名称的记录器设置,如果没找到,则按继承关系向上查找,直到 root。因此,在创建 Logger 时,我们通常使用类型名称做为记录器的名字,缺省情况下,它会使用 root 或某一个父配置,但在需要的时候,我们随时可以为具体的类型添加一个更加 "详细" 的配置。
- 1<?xml version="1.0" encoding="utf-8" ?>
- 2<log4net>
- 3 <appender name="Console" type="log4net.Appender.ConsoleAppender">
- 4 <layout type="log4net.Layout.PatternLayout">
- 5 <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
- 6 </layout>
- 7 </appender>
- 8
- 9 <logger name="Learn.Library.Log4netTest">
- 10 <level value="ALL" />
- 11 </logger>
- 12
- 13 <root>
- 14 <level value="OFF" />
- 15 <appender-ref ref="Console" />
- 16 </root>
- 17</log4net>
- 18
"appender-ref" 参数用于绑定一个或多个具体的 Appender。
- 1<?xml version="1.0" encoding="utf-8" ?>
- 2<log4net>
- 3 <appender name="Console" type="log4net.Appender.ConsoleAppender">
- 4 </appender>
- 5
- 6 <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
- 7 </appender>
- 8
- 9 <root>
- 10 <level value="DEBUG" />
- 11 <appender-ref ref="Console" />
- 12 <appender-ref ref="RollingFile" />
- 13 </root>
- 14</log4net>
- 15
2 Appender / Layout
Log4net 提供了大量的
Appender,最常用的包括
AdoNetAppender、AspNetTraceAppender、ConsoleAppender、FileAppender、OutputDebugStringAppender。每种
Appender 都有特定一些参数,使用时直接从《Log4net 手册》的示例中拷贝过去,就OK了。(代码摘自 Log4net 手册)
(1) AspNetTraceAppender
- 1<appender name="AspNetTraceAppender" type="log4net.Appender.AspNetTraceAppender" >
- 2 <layout type="log4net.Layout.PatternLayout">
- 3 <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
- 4 </layout>
- 5</appender>
- 6
(2) ConsoleAppender
- 1<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
- 2 <layout type="log4net.Layout.PatternLayout">
- 3 <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
- 4 </layout>
- 5</appender>
- 6
(3) FileAppender
- 1<appender name="FileAppender" type="log4net.Appender.FileAppender">
- 2 <file value="log-file.txt" />
- 3 <appendToFile value="true" />
- 4 <layout type="log4net.Layout.PatternLayout">
- 5 <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
- 6 </layout>
- 7</appender>
- 8
有关 Layout 详细信息,请参考 Log4net 相关文档,本文不做详述。
3. Configuration
Log4net 的配置方式十分灵活,即可以写到应用程序配置文件中,也可以使用独立配置文件。同时它还提供了监测配置文件变化的功能,这样我们随时可以调整配置,而无须重启应用程序。
(1) 使用 app.config / web.config
配置app.config / web.config文件
- 1<?xml version="1.0" encoding="utf-8"?>
- 2<!--
- 3 注意: 除了手动编辑此文件以外,您还可以使用
- 4 Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
- 5 “网站”->“Asp.Net 配置”选项。
- 6 设置和注释的完整列表在
- 7 machine.config.comments 中,该文件通常位于
- 8 \Windows\Microsoft.Net\Framework\v2.x\Config 中
- 9-->
- 10<configuration>
- 11 <configSections>
- 12 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
- 13 </configSections>
- 14 <appSettings/>
- 15 <connectionStrings/>
- 16 <log4net>
- 17 <root>
- 18 <level value="ALL" />
- 19 <appender-ref ref="LogFileAppender" />
- 20 <appender-ref ref="RollingFileAppender" />
- 21 <appender-ref ref="AdoNetAppender_SqlServer" />
- 22 </root>
- 23 <!--
- 24写入文件中-->
- 25 <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
- 26 <file value="D:\log-file1.txt" />
- 27 <!-- Example using environment variables in params -->
- 28 <!-- <file value="${TMP}\log-file.txt" /> -->
- 29 <!--<sppendToFile value="true" />-->
- 30 <!-- An alternate output encoding can be specified -->
- 31 <!-- <encoding value="unicodeFFFE" /> -->
- 32 <layout type="log4net.Layout.PatternLayout">
- 33 <!--<footer value="[Footer] Test By Ring1981 " />-->
- 34 <conversionPattern value="%date [%thread] %-5level %logger [%ndc] <%property{auth}> - %message%newline" />
- 35 </layout>
- 36 <!-- Alternate layout using XML
- 37 <layout type="log4net.Layout.XMLLayout" /> -->
- 38 </appender>
- 39
- 40 <!-- 将日志以回滚文件的形式写到文件中
- 41为做测试,我把文件大小设置为1K,大于它,就重新生成文档
- 42-->
- 43 <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" Threshold="Error" >
- 44 <file value="log.txt" />
- 45 <appendToFile value="true" />
- 46 <rollingStyle value="Size" />
- 47 <maxSizeRollBackups value="10" />
- 48 <maximumFileSize value="1KB" />
- 49 <staticLogFileName value="true" />
- 50 <layout type="log4net.Layout.PatternLayout">
- 51 <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
- 52 </layout>
- 53 </appender>
- 54
- 55
- 56 <!-- 将日志记录到数据库中。采用存储过程两种方式
- 57 备注:也可采用SQL语句的方式,主要就是commandType, commandText属性设置不同,请
- 58 参见log4net官方文档
- 59 -->
- 60 <appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender" Threshold="Fatal" >
- 61 <bufferSize value="0" />
- 62 <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- 63 <connectionString value="data source=.;initial catalog=aigoshop;integrated security=false;persist security info=True;User ID=sa;Password=" />
- 64 <commandType value="StoredProcedure" />
- 65 <commandText value="WriteLog" />
- 66 <parameter>
- 67 <parameterName value="@log_date" />
- 68 <dbType value="DateTime" />
- 69 <layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}" />
- 70 </parameter>
- 71 <parameter>
- 72 <parameterName value="@thread" />
- 73 <dbType value="String" />
- 74 <size value="255" />
- 75 <layout type="log4net.Layout.PatternLayout" value="%thread" />
- 76 </parameter>
- 77 <parameter>
- 78 <parameterName value="@log_level" />
- 79 <dbType value="String" />
- 80 <size value="20" />
- 81 <layout type="log4net.Layout.PatternLayout" value="%level" />
- 82 </parameter>
- 83 <parameter>
- 84 <parameterName value="@logger" />
- 85 <dbType value="String" />
- 86 <size value="255" />
- 87 <layout type="log4net.Layout.PatternLayout" value="%logger" />
- 88 </parameter>
- 89 <parameter>
- 90 <parameterName value="@message" />
- 91 <dbType value="String" />
- 92 <size value="4000" />
- 93 <layout type="log4net.Layout.PatternLayout" value="%message" />
- 94 </parameter>
- 95 </appender>
- 96
- 97
- 98 </log4net>
- 99 <system.web>
- 100
- 101 <compilation debug="false" />
- 102
- 103 <authentication mode="Windows" />
- 104
- 105 </system.web>
- 106</configuration>
- 107
使用代码初始化配置。
log4net.Config.XmlConfigurator.Configure();
(2) 使用自定义配置文件
test.log4net
- 1<?xml version="1.0" encoding="utf-8" ?>
- 2<log4net>
- 3 <appender name="Console" type="log4net.Appender.ConsoleAppender">
- 4 <layout type="log4net.Layout.PatternLayout">
- 5 <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
- 6 </layout>
- 7 </appender>
- 8
- 9 <root>
- 10 <level value="DEBUG" />
- 11 <appender-ref ref="Console" />
- 12 </root>
- 13</log4net>
- 14
使用代码初始化配置。
log4net.Config.XmlConfigurator.Configure(new FileInfo("test.log4net"));
使用 XmlConfigurator.ConfigureAndWatch() 方法除了初始化配置外,还会监测配置文件的变化,一旦发生修改,将自动刷新配置。
(3) XmlConfiguratorAttribute
我们还可以使用 XmlConfiguratorAttribute 代替 XmlConfigurator.Config()/ConfigureAndWatch(),ConfiguratorAttribute 用于定义与 Assembly 相关联的配置文件名。
方式1: 关联到 test.log4net,并监测变化。
[assembly:log4net.Config.XmlConfigurator(ConfigFile="test.log4net", Watch=true)]
方式2: 关联到 test.exe.log4net (或 test.dll.log4net,文件名前缀为当前程序集名称),并监测变化。
[assembly:log4net.Config.XmlConfigurator(ConfigFileExtension="log4net", Watch=true)]
4.应用log4netDemo下载
- CREATE TABLE [dbo].[Log] (
- [ID] [int] IDENTITY (1, 1) NOT NULL ,
- [Date] [datetime] NOT NULL ,
- [Thread] [varchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL ,
- [Level] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
- [Logger] [varchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL ,
- [Message] [varchar] (4000) COLLATE Chinese_PRC_CI_AS NOT NULL
- ) ON [PRIMARY]
- GO
- CREATE PROCEDURE WriteLog
- @log_date datetime,
- @thread varchar(255),
- @log_level varchar(20),
- @logger varchar(255),
- @message varchar(4000)
- AS
- INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)
- GO
运行完程序后,看到文件和数据库日志表都写入了两条。想到能否在数据库正常打开时只写日志表,在数据库连接不上而写到日志文件中呢。哈。。请看第三篇:log4net的简单使用之三_ log4net高级应用
转自:http://www.cnblogs.com/kevinlzf/archive/2008/07/16/1244255.html
Log4Net.Config配置信息《转》的更多相关文章
- GIT-查看config配置信息
config 配置指令 1 git config config 配置有system级别 global(用户级别) 和local(当前仓库)三个 设置先从system->global->lo ...
- iis虚拟目录或应用程序不继承父站点的web.config配置信息
A为主站点 B为A的应用程序站点 再A的web.config中对不想继承的节点用location 套起来.如下: <location path="." allowOverri ...
- Log4Net 日志配置[附带源码]
前述 园子里有许多人对log4net这款开源的日志记录控件有很多介绍.在这里个人再做一次总结,希望对以后有所帮助,需要的时候可以直接使用,减少查阅资料的时间.利用log4net可以方便地将日志信息记录 ...
- MVC 5 下,应用log4net收集异常信息
1.安装log4net. 首先在VS中通过nuget安装logenet,我用的是VS2013,截屏如下:
- Log4net快速配置使用指南。(快速搭建log4net日志平台手册)
每做一个新项目,都会用到log4net,但总是忘记如何快速配置.有时在网上搜半天也找不到好的模板,大都在介绍参数的使用,在此做下总结,争取下次用时仅10分钟就可搭建好log4net. 直接上介绍的步骤 ...
- log4net的配置及使用
网上查了有很多种写法和配置,结果百度出来都是几种方法混合写法,拷在一起结果还不能正常运行.因此把自己做成功的代码写上来做个备份. 运行环境:log4net 2.03版本,.net 4.5 大体步骤为: ...
- 将Log4net的配置配置到的独立文件中
本文转载:http://blog.csdn.net/wanzhuan2010/article/details/7587780 另外一篇博客:http://grim1980.blog.sohu.com/ ...
- 日志管理-将Log4net的配置配置到的独立文件中
转自:http://www.cnblogs.com/zfanlong1314/p/3662679.html使用log4net已经很久了.但从来没有详情了解log4的参数,及具体使用方法.看了周公的博客 ...
- log4net类库配置、WebService配置
一.类库配置 结构如下图 1.LogUtility类 public class LogUtility { private static readonly log4net.ILog log = log4 ...
随机推荐
- APP专项测试 | 内存及cpu
命令: adb shell dumpsys meminfo packagename 关注点: 1.Native/Dalvik 的 Heap 信息 具体在上面的第一行和第二行,它分别给出的是JNI层和 ...
- Spiral Matrix -- LeetCode
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...
- [CC-CHANOQ]Chef and odd queries
题目大意: 给定$n(10^5)$个线段$[l_i,r_i](1\leq l_i,r_i\leq n)$,有$q(q\leq10^5)$组询问,每次给出$m_i(\sum m_i\leq n)$个点$ ...
- javap -c 字节码含义
aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量-1压入栈 iconst_0 将int类型常量0压入栈 icons ...
- JAVA生成问答式验证码图片,支持加减算法
原文:http://liuguihua0823.iteye.com/blog/1511355 import java.awt.Color; import java.awt.Font; import j ...
- Makefile中的“-I”(大写i),“-L”(大写l),“-l”(小写l)
用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数, “-I”(大写i):表示包含头文件: “-L”(大写l):表示库文件目录: “-l”(小写l):表示链 ...
- Playonlinux
apt-get install playonlinux -y apt-get install winbind -y apt-get install unzip -y 开始中搜索:playonlinux ...
- Linux内核实践之工作队列
工作队列(work queue)是另外一种将工作推后执行的形式,它和tasklet有所不同.工作队列可以把工作推后,交由一个内核线程去执行,也就是说,这个下半部分可以在进程上下文中执行.这样,通过工作 ...
- Http协议三次握手过程
Http协议三次握手过程 TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: ...
- 转:MyBatis学习总结(Mybatis总结精华文章)
http://www.cnblogs.com/xdp-gacl/tag/MyBatis%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/ 当前标签: MyBatis学习总结 ...