【log4net】配置文件
相关资料:
http://www.cnblogs.com/dragon/archive/2005/03/24/124254.html
注意:
//如果为了使得应用程序的配置文件(web/app.config)不至于很臃肿,把log4net的配置单独放置在
//Log4net.config文件中,那么需要应用程序的AssemblyInfo.cs添加这行代码。目的是程序启动时是找到Log4net.config配置文件。
也可以用代码进行配置:
请在 应用程序启动前调用:
- private void LoadLog4netConfig()
- {
- string filePath = Server.MapPath("~/Config/Log4net.config");
- FileInfo fileInfo = new FileInfo(filePath);
- //DOMConfigurator已经被XmlConfigurator取代
- //log4net.Config.DOMConfigurator.Configure(fileInfo);
- XmlConfigurator.ConfigureAndWatch(fileInfo);
- }
注意:
如果是分层架构中,假设LoadLog4netConfig是在程序集1中调用
- string filePath = Server.MapPath("~/Config/Log4net.config");
- 还是指的是调用了程序集1的应用程序的目录
- ~/Config/Log4net.config
寻找,- 故,配置文件Log4net.config应该添加在调用log4net的程序集中
一些代码的用法示例:
- protected void Button1_Click(object sender, EventArgs e)
- {
- //注释掉其他所有的Loger,只用<root>这个父loger
- //再把已经注释掉其他的Loger的<appender-ref ref="LogFileAppender" />
- //复制到<root>,可以同时进行所有子loger向的日志方案
- ILog rootLog = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- rootLog.Debug("I'm rootLoger");
- //ILog logFileAppenderLoggingExample = LogManager.GetLogger("LogFileAppender.LoggingExample");
- //ILog consoleAppLoggingExample = LogManager.GetLogger("ConsoleApp.LoggingExample");
- //if (null != logFileAppenderLoggingExample)
- //{
- // logFileAppenderLoggingExample.Debug("Hello, I'm LogFileAppender.LoggingExample, nothing, just say hello! ");
- // consoleAppLoggingExample.Debug("Hello, I'm consoleAppLoggingExample, nothing, just say hello! ");
- //}
- }
Log4net.config文件:
- <?xml version="1.0" encoding="utf-8" ?>
- <!--
- .NET application configuration file
- This file must have the exact same name as your application with .config appended to it.
- For example if your application is ConsoleApp.exe then the config file must be ConsoleApp.exe.config.
- It must also be in the same directory as the application.
- -->
- <configuration>
- <!-- Register a section handler for the log4net section -->
- <configSections>
- <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
- </configSections>
- <appSettings>
- <!-- To enable internal log4net logging specify the following appSettings key -->
- <!-- <add key="log4net.Internal.Debug" value="true"/> -->
- </appSettings>
- <!-- This section contains the log4net configuration settings -->
- <log4net>
- <!-- Define some output appenders -->
- <!--Appender的组件来定义输出介质-->
- <!--log4net.Appender.RollingFileAppender日志文件超过maximumFileSize后自动创建第二个文件-->
- <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
- <file value="rolling-log.txt" />
- <appendToFile value="true" />
- <maxSizeRollBackups value="" />
- <maximumFileSize value="" />
- <rollingStyle value="Size" />
- <staticLogFileName value="true" />
- <layout type="log4net.Layout.PatternLayout">
- <header value="[Header]
- " />
- <footer value="[Footer]
- " />
- <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
- </layout>
- </appender>
- <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
- <file value="log-file.txt" />
- <!-- Example using environment variables in params -->
- <!-- <file value="${TMP}\log-file.txt" /> -->
- <sppendToFile value="true" />
- <!-- An alternate output encoding can be specified -->
- <!-- <encoding value="unicodeFFFE" /> -->
- <layout type="log4net.Layout.PatternLayout">
- <geader value="[Header]
- " />
- <footer value="[Footer]
- " />
- <conversionPattern value="%date [%thread] %-5level %logger [%ndc] <%property{auth}> - %message%newline" />
- </layout>
- <!-- Alternate layout using XML
- <layout type="log4net.Layout.XMLLayout" /> -->
- </appender>
- <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%date [%thread] %-5level %logger [%ndc] <%property{auth}> - %message%newline" />
- </layout>
- </appender>
- <appender name="NetSendAppender" type="log4net.Appender.NetSendAppender">
- <threshold value="ERROR" />
- <server value="SQUARE" />
- <recipient value="nicko" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
- </layout>
- </appender>
- <!-- Example of how to configure the AdoNetAppender -->
- <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender" >
- <connectionString value="Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES ('%date','%thread','%level','%logger','%message')" />
- </layout>
- </appender>
- <appender name="A" type="log4net.Appender.ForwardingAppender" >
- <threshold value="WARN"/>
- <appender-ref ref="ConsoleAppender" />
- </appender>
- <appender name="B" type="log4net.Appender.ForwardingAppender" >
- <filter type="log4net.Filter.LevelRangeFilter">
- <levelMin value="DEBUG"/>
- <levelMax value="INFO"/>
- </filter>
- <appender-ref ref="ConsoleAppender" />
- </appender>
- -->
- <!-- Setup the root category, add the appenders and set the default level -->
- <!-- 在框架的体系里,所有的日志对象都是根日志(root logger)的后代。
- 因此如果一个日志对象没有在配置文件里显式定义,则框架使用根日志中定义的属性。
- 在<root>标签里,可以定义level级别值和Appender的列表。如果没有定义LEVEL的值,
- 则缺省为DEBUG。可以通过<appender-ref>标签定义日志对象使用的Appender对象。
- <appender-ref>声明了在其他地方定义的Appender对象的一个引用。
- 在一个logger对象中的设置会覆盖根日志的设置。
- 而对Appender属性来说,子日志对象则会继承父日志对象的Appender列表。
- 这种缺省的行为方式也可以通过显式地设定<logger>标签的additivity属性为false而改变。-->
- <root>
- <level value="All" />
- <!--引用的appender的名称-->
- <appender-ref ref="LogFileAppender" />
- <appender-ref ref="ConsoleAppender" />
- </root>
- <!-- Specify the level for some specific categories -->
- <!-- 元素预定义了一个具体日志对象的设置。
- 然后通过调用LogManager.GetLogger(“testAPP.Logging”)函数,
- 你可以检索具有该名字的日志。如果LogManager.GetLogger(…)打开的不是预定义的日志对象,
- 则该日志对象会继承根日志对象的属性。知道了这一点,我们可以说,
- 其实<logger>标签并不是必须的。-->
- <!--<logger name="ConsoleApp.LoggingExample">
- <level value="ALL" />
- --><!--引用的appender的名称--><!--
- <appender-ref ref="ConsoleAppender" />
- </logger>
- <logger name="LogFileAppender.LoggingExample">
- <level value="ALL" />
- --><!--引用的appender的名称--><!--
- <appender-ref ref="LogFileAppender" />
- </logger>-->
- </log4net>
- </configuration>
官网代码中的Lo4net配置文件:
- <?xml version="1.0" encoding="utf-8" ?>
- <!--
- .NET application configuration file
- This file must have the exact same name as your application with .config appended to it.
- For example if your application is ConsoleApp.exe then the config file must be ConsoleApp.exe.config.
- It must also be in the same directory as the application.
- -->
- <configuration>
- <!-- Register a section handler for the log4net section -->
- <configSections>
- <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
- </configSections>
- <appSettings>
- <!-- To enable internal log4net logging specify the following appSettings key -->
- <!-- <add key="log4net.Internal.Debug" value="true"/> -->
- </appSettings>
- <!-- This section contains the log4net configuration settings -->
- <log4net>
- <!-- Define some output appenders -->
- <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
- <file value="rolling-log.txt" />
- <appendToFile value="true" />
- <maxSizeRollBackups value="10" />
- <maximumFileSize value="100" />
- <rollingStyle value="Size" />
- <staticLogFileName value="true" />
- <layout type="log4net.Layout.PatternLayout">
- <header value="[Header]
- " />
- <footer value="[Footer]
- " />
- <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
- </layout>
- </appender>
- <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
- <file value="log-file.txt" />
- <!-- Example using environment variables in params -->
- <!-- <file value="${TMP}\log-file.txt" /> -->
- <sppendToFile value="true" />
- <!-- An alternate output encoding can be specified -->
- <!-- <encoding value="unicodeFFFE" /> -->
- <layout type="log4net.Layout.PatternLayout">
- <geader value="[Header]
- " />
- <footer value="[Footer]
- " />
- <conversionPattern value="%date [%thread] %-5level %logger [%ndc] <%property{auth}> - %message%newline" />
- </layout>
- <!-- Alternate layout using XML
- <layout type="log4net.Layout.XMLLayout" /> -->
- </appender>
- <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%date [%thread] %-5level %logger [%ndc] <%property{auth}> - %message%newline" />
- </layout>
- </appender>
- <appender name="NetSendAppender" type="log4net.Appender.NetSendAppender">
- <threshold value="ERROR" />
- <server value="SQUARE" />
- <recipient value="nicko" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
- </layout>
- </appender>
- <!-- Example of how to configure the AdoNetAppender
- <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender" >
- <connectionString value="Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES ('%date','%thread','%level','%logger','%message')" />
- </layout>
- </appender>
- -->
- <!--
- <appender name="A" type="log4net.Appender.ForwardingAppender" >
- <threshold value="WARN"/>
- <appender-ref ref="ConsoleAppender" />
- </appender>
- <appender name="B" type="log4net.Appender.ForwardingAppender" >
- <filter type="log4net.Filter.LevelRangeFilter">
- <levelMin value="DEBUG"/>
- <levelMax value="INFO"/>
- </filter>
- <appender-ref ref="ConsoleAppender" />
- </appender>
- -->
- <!-- Example of how to configure the AdoNetAppender to connect to MS Access -->
- <appender name="ADONetAppender_Access" type="log4net.Appender.AdoNetAppender">
- <connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;" />
- <commandText" value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)" />
- <parameter>
- <parameterName value="@log_date" />
- <dbType value="String" />
- <size value="255" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%date" />
- </param>
- </parameter>
- <parameter>
- <parameterName value="@thread" />
- <dbType value="String" />
- <size value="255" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%thread" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value="@log_level" />
- <dbType value="String" />
- <size value="50" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%level" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value="@logger" />
- <dbType value="String" />
- <size value="255" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%logger" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value="@message" />
- <dbType value="String" />
- <size value="1024" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%message" />
- </layout>
- </parameter>
- </appender>
- <!-- Example of how to configure the AdoNetAppender to connect to MS SQL Server -->
- <appender name="ADONetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">
- <bufferSize value="1" />
- <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <connectionString value="data source=SQLSVR;initial catalog=test_log4net;integrated security=false;persist security info=True;User ID=sa;Password=sa" />
- <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)" />
- <parameter>
- <parameterName value="@log_date" />
- <dbType value="DateTime" />
- <!--
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}" />
- </layout>
- -->
- <layout type="log4net.Layout.RawTimeStampLayout" />
- </parameter>
- <parameter>
- <parameterName value="@thread" />
- <dbType value="String" />
- <size value="255" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%thread" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value="@log_level" />
- <dbType value="String" />
- <size value="50" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%level" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value="@logger" />
- <dbType value="String" />
- <size value="255" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%logger" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value="@message" />
- <dbType value="String" />
- <size value="4000" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%message" />
- </layout>
- </parameter>
- </appender>
- <!-- Setup the root category, add the appenders and set the default level -->
- <root>
- <level value="WARN" />
- <appender-ref ref="LogFileAppender" />
- <appender-ref ref="ConsoleAppender" />
- <!-- <appender-ref ref="ADONetAppender_SqlServer" /> -->
- <appender-ref ref="NetSendAppender" />
- <!-- <appender-ref ref="A" /> -->
- </root>
- <!-- Specify the level for some specific categories -->
- <logger name="ConsoleApp.LoggingExample">
- <!-- <appender-ref ref="B" /> -->
- <level value="ALL" />
- <appender-ref ref="RollingLogFileAppender" />
- </logger>
- </log4net>
- </configuration>
另外一个配置注释:
- <?xml version="1.0" encoding="utf-8" ?>
- <configuration>
- <configSections>
- <section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System,
- Version=3.3.3.3001, Culture=neutral, PublicKeyToken=aa95f207798dfdb4" />
- <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
- </configSections>
- <log4net>
- <!--定义输出到文件中-->
- <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
- <!--<appender name="LogFileAppender" type="log4net.Appender.FileAppender">-->
- <!--定义文件存放位置-->
- <file value="log4netfile.log" />
- <appendToFile value="true" />
- <rollingStyle value="Date" />
- <datePattern value="yyyyMMdd-HH:mm:ss" />
- <layout type="log4net.Layout.PatternLayout">
- <!--输出格式-->
- <!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info-->
- <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 所在类:%logger property:[%property{NDC}] - 日志描述:%message%newline" />
- </layout>
- </appender>
- <!--定义输出到控制台命令行中-->
- <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
- </layout>
- </appender>
- <!--定义输出到windows事件中-->
- <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
- </layout>
- </appender>
- <!--定义输出到数据库中,这里举例输出到Access数据库中,数据库为C盘的log4net.mdb-->
- <appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender">
- <connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:log4net.mdb" />
- <commandText value="INSERT INTO LogDetails ([LogDate],[Thread],[Level],[Logger],[Message]) VALUES (@logDate, @thread, @logLevel, @logger,@message)" />
- <!--定义各个参数-->
- <parameter>
- <parameterName value="@logDate" />
- <dbType value="String" />
- <size value="240" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%date" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value="@thread" />
- <dbType value="String" />
- <size value="240" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%thread" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value="@logLevel" />
- <dbType value="String" />
- <size value="240" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%level" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value="@logger" />
- <dbType value="String" />
- <size value="240" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%logger" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value="@message" />
- <dbType value="String" />
- <size value="240" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%message" />
- </layout>
- </parameter>
- </appender>
- <!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->
- <root>
- <!--文件形式记录日志-->
- <appender-ref ref="LogFileAppender" />
- <!--控制台控制显示日志-->
- <appender-ref ref="ConsoleAppender" />
- <!--Windows事件日志-->
- <appender-ref ref="EventLogAppender" />
- <!-- 如果不启用相应的日志记录,可以通过这种方式注释掉
- <appender-ref ref="AdoNetAppender_Access" />
- -->
- </root>
- </log4net>
- </configuration>
【log4net】配置文件的更多相关文章
- log4net配置文件设置
windows服务执行cmd命令 最长公共子字符串 log4net配置文件设置 2011-11-16 13:15:41| 分类: Notes | 标签: |字号大中小 订阅 log4net ...
- Log4net配置文件一般配置
配置文件一般配置 <?xml version="1.0"?> <configuration> <configSections> <sect ...
- Window服务初级教程以及log4net配置文件初始化
Window服务初级教程:http://www.jb51.net/article/48987.htm 另外,配置log4net这个日志功能的时候需要初始化,不然会报没有初始化的错误,而且初始化的节点应 ...
- log4net 配置文件配置方法
转自:http://www.dozer.cc/2013/06/log4net-config-file-order/ 最近把项目中所有的日志都改成了 log4net ,同事也蠢蠢欲动,用起了 log4n ...
- AspNetCore配置多环境log4net配置文件
前言 在之前的文章中有讲到AspNetCore多环境配置文件的应用,我们根据自己多种环境分别配置多个appsettings.$EnvironmentName.json文件. 在实际的开发中我们可能会遇 ...
- Log4net 配置文件组成
Example: <?xml version="1.0" encoding="utf-8" ?><configuration><l ...
- log4net配置文件
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSec ...
- Log4net 配置文件
<?xml version="1.0" encoding="utf-8" ?> <configuration> <!--Log日记 ...
- Log4Net读取XML配置文件及在代码中完成添加Logger操作
解决问题: 将log4net配置文件与app.config配置文件分开 手动读取log4net配置文件 手动创建logger 可将日志输出功能封装在类库中,应用程序引用时无需添加assembly引用及 ...
- 在C#代码中应用Log4Net系列教程(附源代码)
Log4Net应该可以说是DotNet中最流行的开源日志组件了.以前需要苦逼写的日志类,在Log4Net中简单地配置一下就搞定了.没用过Log4Net,真心不知道原来日志组件也可以做得这么灵活,当然这 ...
随机推荐
- C#高效率导出Excel
首先,需要引用excel的库: Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Exce ...
- C++ Double Ended Queues(双向队列)
双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样). Constructors 创建一个新双向队列 Operators 比较和赋值双向队列 assign() 设置双向队列的值 ...
- atoi 实现
int atoi(const char *nptr); 把字符串转换成整型数.ASCII to integer 的缩写. 头文件: #include <stdlib.h> 参数nptr字符 ...
- PCB常用度量衡单位
1英尺=12英寸 1英寸inch=1000密尔mil 1mil=25.4um 1mil=1000uin (mil密耳有时也成英丝) 1um=40uin(有些公司称微英寸为麦,其实是微英寸) 1OZ=2 ...
- 30个惊人的插件来扩展 Twitter Bootstrap
Bootstrap Maxlength It is a lightweight plugin that allows detecting the HTML maxlength property of ...
- JQuery插件开发 - 模板
(function($) { $.fn.PluginName = function(options) { // 创建一个默认设置对象 var defaults = { key : "Defa ...
- 批处理测试局域网网络连通性ping1-255
for /l %%1 in (1 1 255)do ping /n 1 192.168.1.%%1 ##bat下 运行 for /l %i in (1,1,254) do ping -n ...
- CSS3 animation小动画
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- 【zendstudio】如何利用zendstudio新建 或导入php项目
一.利用ZendStudio创建 PHP Project 1. 打开ZendStudio, 选择:File à New à PHP Project, 如下图所示: 于是弹出如下界面: 在”Projec ...
- vc列表控件的初始化
void CManageProcessDlg::InitList() { m_ListProcess.SetExtendedStyle(m_ListProcess.GetExtendedStyle( ...