Log4Net配置注意点
log4Net的配置文章一搜一大把,配置使用还是有一些点花费了很多时间,这里整理一下,添上坑,让Developer走的更稳。
编程式配置路径
新建一个配置文件,通过写代码来动态加载log4Net的配置文件。
class Program
{
static void Main(string[] args)
{
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Environment.CurrentDirectory + @"\" + "Log4Net.config"));
ILog logger = LogManager.GetLogger("loggerAX");
//logger.IsDebugEnabled
logger.Warn("Test Logger");
}
}
两点:
1. 就是在载入log的时候,路径需要小心,要么是将文件属性配置为复制到到编译路径(Copy always);如果不配置文件“copy always”,就需要调整加载的路径,使之能够加载到文件;Environment.CurrentDirectory 返回的是Debug或者release路径。

2.加载方式为:
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Environment.CurrentDirectory + @"\" + "Log4Net.config"));
系统配置文件配置
所谓系统配置文件就是利用C#中固有的配置文件(web.config,app.config)来进行配置,而不是新建一个配置文件。
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"></section>
</configSections>
<log4net>
<root name="loggerAX">
…
</configuration>
代码如下:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace MonitorTester
{
class Program
{
static void Main(string[] args)
{
ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
logger.Error("Test Logger");
}
}
}
两点需要注意一下:
1.添加声明,如果没有这个声明,log对象返回的各个级别(DEBUG~OFF)都将是false;另外你在什么哪个类里面调用“LogManager.GetLogger()”,就在那个类的namespace上面添加这个声明。
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
2.代码加载的方式
ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
Log4Net的输出模式
- log4X是可以打印出函数名称的,打印模式%M就是输出函数名称;这样其实就不需要自己封装底层函数来获取当前函数名称;但是有一点:不能对log4x进行封装了,因为log4x默认输出方法名称是调用ILog接口的第一层函数,封装一层(loggerMan)将会导致%M取得是loggerMan的函数名称;
- 在配置模式匹配的时候,如果想要添加单词,可以直接写,模式匹配是以%开始,空格结束的,所以%前面的字母会被原封不动的保留下来:%d %p [TID: %t] %c(Line:%L) - [%M]%n
注:%d:日期;%p:优先级(INFO/debug/warning);%T:进程号;%L:打印发生时类文件的行数;%n:换行
以上,是配置log4Net的关注点;但是为什么不使用Enterprise Library里面的logger呢?还有可视化工具帮助配置。log4Net的优势就是小巧,需要引入就是一个dll。但是对于EL而言,关联引用的dll就是一堆了。所以如果项目中成套使用EL,那么logger还是使用EL的,否则的化,使用小巧轻便的log4Net吧。
Log4Net配置注意点的更多相关文章
- Common.Logging log4net Common.Logging.Log4Net 配置
1.log4net 单独配置 log4net支持多种格式的日志输出,我这里只配置输出到本地的txt文件这种格式. <log4net> <root> <appender-r ...
- Log4Net 配置StmpAppender
目录 Log4Net 配置StmpAppender 1 1.前言 1 2.详细配置 1 1.StmpAppender配置 1 2.Root 配置 2 3.更多选项 ...
- C# Log4Net配置
Log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件.数据库.EventLog等),日志就是程序的黑匣子,可以通过日志查看系统的运行过程,从而发现系统的问题.日志的作用:将运 ...
- Log4net配置与使用简要说明
log4net详细配置:http://logging.apache.org/log4net/本文描述如有错误,以官网的说明为准;p 一:先来看看log4net中的几个概念: 1. log4net继承机 ...
- MVC Log4Net 配置
1.引用log4net.dll 2.在项目根目录下增加log4.config文件 <?xml version="1.0"?> <configuration> ...
- ASP.NET MVC学习之Log4Net配置(日志记录)
Log4Net配置笔记---- 首先,添加对log4net.dll的引用. 在Web.config文件下的Configuration节点下添加Log4Net的配置信息: <!--Log4Net配 ...
- C# 日志系统 log4net 配置及使用
1.引用Dll 版本是:1.2.10.0,下载Dll 2.Web.config文件配置 <?xml version="1.0" encoding="utf-8&qu ...
- JWT+Log4net配置与使用
Log4net的优点 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.程序运行过 ...
- log Log4NET配置
Log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件.数据库.EventLog等),日志就是程序的黑匣子,可以通过 日志查看系统的运行过程,从而发现系统的问题.日志的作用:将 ...
- NHibernate的调试技巧和Log4Net配置
1.查看nhibernate写在控制台里的sql语句 在配置文件中有这么个选项,假如把它设置为true,nhibernate会把执行的sql显示在控制台上. <property name=&qu ...
随机推荐
- mvn创建web项目
1. 新建maven项目,选择maven骨架maven-archetype-webapp来建立web项目 2. 选择next,输入groupid:MavenWebTest, artifactid:cn ...
- 数字证书KeyTool使用(第二篇)
http://my.oschina.net/frankies/blog/344914 J2SDK提供了keytool命令行工具,可以根据指定的参数来创建数字证书.生成的证书或证书库默认保存在命令行当前 ...
- JMeter入门(2):一个简单实例
场景描述: 自己建立一个服务器端,接受参数:name和age,并将这些数据保存到数据库中: http://localhost:8080/Server/SaveServlet?name=xxx& ...
- VC++深入详解-第一章学习心得(二)
前面介绍到了注册窗口,接下来进行窗口的创建,利用CreateWindow函数,结构如下 CreateWindowExW( DWORD dwExStyle, LPCWSTR lpClassName, / ...
- 【转】Android Studio Essential Training
http://ask.android-studio.org/?/explore/category-video Android Studio Essential Training内容包括:- Andro ...
- mysql其他函数
mysql,,); +---------------+ ,,) | +---------------+ | +---------------+ row in set (0.22 sec) mysql) ...
- Linq分页
/// <summary> /// Linq分页 /// </summary> ;//每页条数 ;//总条数 ;//当前第几页 public static string con ...
- HIdernate入门
简介: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使 ...
- Base64的Java代码实现
欢迎拍砖~ 在数据二进制和byte互相转换的地方方法写得有点挫,不知道有没有更好的方法~ 顺便复习了java的一些基础东西,如位操作,原码反码补码 可以在这篇blog里学习到详细的知识点:http:/ ...
- centos7 安装php5.6.0 、nginx1.7.4、phpssdbadmin
1 创建用户.网站目录和下载相关的安装包 groupadd www #添加www组 创建目录/data/www/ chown www:www /data/www/ -R #设置目录所有者 chmod ...