附带详细注释的log4net的app.config文件配置例子
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!--
In a config file where there will (potentially) be more information stored beyond just the log4net configuration information, you will need to specify a
section to identify where the log4net configuration is housed. Here is a sample section that specifies that the configuration information will be stored
under the XML tag "log4net"
-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<!--
You need to have one root section to house your top-level logger references. These are the loggers that inherit information from your base logger (root).
The only other thing that the root section houses is the minimum level to log. Since everything inherits from the root, no appenders will log information below
that specified here. This is an easy way to quickly control the logging level in your application. Here is an example with a default level of
INFO (which means DEBUG messages will be ignored) and a reference to two appenders that should be enabled under root:
-->
<root>
<level value="ALL" />
<appender-ref ref="RollingFileAppender" />
</root>
<!--
Sometimes you will want to know more about a particular part of your application. log4net anticipated this by allowing you to specify additional logger
references beyond just the root logger.
Note that the logger name is the full name of the class including the namespace. If you wanted to monitor an entire namespace, it would be as simple as listing
just the namespace you wanted to monitor. I would recommend against trying to re-use appenders in multiple loggers. It can be done, but you can get some
unpredictable results.
Set logger name to * to target entire application
-->
<logger name="*">
<!--<level value="DEBUG"/>-->
<level value="ALL"/>
<appender-ref ref="RollingFileAppender"/>
</logger>
<!--
An appender is the name for what logs the information. It specifies where the information will be logged, how it will be logged, and under what circumstances
the information will be logged. While each appender has different parameters based upon where the data will be going, there are some common elements.
The first is the name and type of the appender. Each appender must be named (anything you want) and have a type assigned to it (specific to the type of
appender desired)
-->
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<!--
Inside of each appender must be a layout section. This may be a bit different depending on the type of appender being used, but the basics are the same.
You need a type that specifies how the data will be written. There are multiple options, but the one that I suggest you use is the pattern layout type.
This will allow you to specify how you want your data written to the data repository. If you specify the pattern layout type, you will need a sub-tag that
specifies a conversion pattern. This is the pattern by which your data should be written to the data repository.
-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline"/>
</layout>
<!-- Rolling File Appender specific settings. E.g. The name of the text file has to be specified -->
<file value="c:\ApplicationLog\" />
<appendToFile value="true" />
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd'.log'" />
<maxSizeRollBackups value="90" />
<staticLogFileName value="false" />
</appender>
</log4net>
<system.diagnostics>
<trace autoflush="true">
<!-- Output the log4net internal debug messages by adding a trace listener -->
<listeners>
<add name="textWriterTraceListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\ApplicationLog\log4net.log" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
配置文件设置完成后,需要引入下面三行代码
1. 在被跟踪的类外面加上:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
2. 在被跟踪的类中加上以下代码,创建私有的ILog实例
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
3. 在需要写log的地方,添加追加log的具体实现代码
log.Info("Initlaized");
或
log.Error("Error occured while initializing", ex);
附带详细注释的log4net的app.config文件配置例子的更多相关文章
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
- Winform 数据库连接app.config文件配置 数据库连接字符串
1.添加配置文件 新建一个winform应用程序,类似webfrom下有个web.config,winform下也有个App.config;不过 App.config不是自动生成的需要手动添加,鼠标右 ...
- C# app.config文件配置和修改
很多时候我们需要对系统的.config文件进度读写操作,例如:系统初始化的参数的更改.系统参数的改变都需要更新到配置文件. 首先我们有必要了解一下app.config.exe.config和vshos ...
- Winform数据库连接app.config文件配置
1.添加配置文件 新建一个winform应用程序,类似webfrom下有个web.config,winform下也有个App.config;不过 App.config不是自动生成的需要手动添加,鼠标右 ...
- c#Winform程序调用app.config文件配置数据库连接字符串
你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings name=" " connectionString= ...
- C#中App.config文件配置获取
最新的framework使用如下方法: using System.Configuration; ConfigurationManager.AppSettings["key"]; A ...
- C# App.config文件配置数据的读写
添加程序集引用 System.configuration.dll 和命名空间 using System.Configuration; 读: ConfigurationManager.AppSetti ...
- Visual Studio 2013 Unit Test Project App.config文件设置方法
开放中经常会要做单元测试,新的项目又没有单元测试项目,怎么才能搭建一个单元测试项目呢? 下面跟我四步走,如有错误之处,还请指正! 1.添加项目 2.添加配置文件 新建app.config文件,注意不是 ...
- C#项目实例中读取并修改App.config文件
C#项目是指一系列独特的.复杂的并相互关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间.预算.资源限定内,依据规范完成.项目参数包括项目范围.质量.成本.时间.资源. 1. 向C#项目实 ...
随机推荐
- Linux - Yum的常用方法总结
简述 rpm是由红帽公司开发的软件包管理方式,使用rpm可以方便的进行软件的安装.查询.卸载.升级等工作. 但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时. Yum(全称 ...
- 字符串js编码转换成实体html编码的方法(防范XSS攻击)
js代码在html页面中转换成实体html编码的方法一: <!DOCTYPE html><html> <head> <title>js代码转换成实 ...
- JAVA jdbc(数据库连接池)学习笔记(一)
学习内容: 1.JDBC的含义... JDBC想必学过JAVA的就不会陌生,JDBC到底是什么呢?其实就是由JAVA的一些类和接口构成的API,保存在java.sql和javax.sql..包中的一些 ...
- SQL Server中的事务日志管理(6/9):大容量日志恢复模式里的日志管理
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...
- Django--models表操作
需求 models对表的增删改查 知识点 1.基础操作 1.1 增 方法一 1 models.Tb1.objects.create(c1='xx', c2='oo') #增加一条数据 1 2 di ...
- MVC怎么在当前视图中,传递参数给到另外一个视图?
在TransData.cshtml视图中: <div> <!--在一个视图中,请求另外一个视图,并且将数据传到另外一个视图--> <!--视图中调用无返回值的方法,需要加 ...
- Winform开发框架之权限管理系统改进的经验总结(1)-TreeListLookupEdit控件的使用
最近一直在做一些技术性的研究和框架改进工作,博客也落下好几天没有更新了,也该是时候静下心来,总结这段时间的一些技术改进的经验了.和上一阶段的CRM系统开发和技术研究一样,我都喜欢在一个项目或者模块完成 ...
- [CLR via C#]26. 计算限制的异步操作
一.CLR线程池基础 前面说过,创建和销毁线程是一个比较昂贵的操作,太多的线程也会浪费内存资源.由于操作系统必须调度可运行的线程并执行上下文切换,所以太多的线程还有损于性能.为了改善这个情况,CLR使 ...
- How to manage the certificates in the PC
1.open Run command. 2.enter 'mmc' . 3.Click File, and Add or Remove Snap-in. 4.Select Certificates, ...
- 深入理解php中的ini配置(1)
这篇文章不会详细叙述某个ini配置项的用途,这些在手册上已经讲解的面面俱到.我只是想从某个特定的角度去挖掘php的实现机制,会涉及到一些php内核方面的知识:-) 使用php的同学都知道php.ini ...