Log4Net使用方法
项目里都会用到日志记录..特别是在本地跑的欢畅..一上服务器就嗝屁的时候..日志会帮你大忙..
Log4net算是一种应用的最广泛的日志记录方式了..下面来简略的说下他的用法..
先下载log4net.dll [下载] 并引用
然后在配置文件里写入一些配置的节值..
下边是我的..
<log4net>
<appender name="LogsFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs/running.txt"/>
<appendToFile value="true"/>
<encoding value="UTF-8"/>
<rollingStyle value="Date"/>
<datePattern value=".yyyyMMdd"/>
<maxSizeRollBackups value="" />
<maximumFileSize value="5MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
</layout>
</appender> <root>
<level value="ALL"/>
<appender-ref ref="LogsFileAppender"/>
</root>
</log4net>
因为一般日志都是记录到文件了..所以上边的配置还是最多的..
如果你想加入到数据库..那就要按照下边的写法..
<log4net>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value=""/>
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<connectionString value="data source=192.168.100.100;initial catalog=DBName;integrated security=false;persist security info=True;User ID=sa;Password=123"/>
<commandText value="INSERT INTO Log (Date, Thread, Level, Logger, Message, Exception, LogApp) VALUES (@Date, @Thread, @Level, @Logger, @Message, @Exception,'Web')"/>
<parameter>
<parameterName value="@Date"/>
<dbType value="DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout"/>
</parameter>
<parameter>
<parameterName value="@Thread"/>
<dbType value="String"/>
<size value=""/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread"/>
</layout>
</parameter>
<parameter>
<parameterName value="@Level"/>
<dbType value="String"/>
<size value=""/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level"/>
</layout>
</parameter>
<parameter>
<parameterName value="@Logger"/>
<dbType value="String"/>
<size value=""/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger"/>
</layout>
</parameter>
<parameter>
<parameterName value="@Message"/>
<dbType value="String"/>
<size value=""/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%Message"/>
</layout>
</parameter>
<parameter>
<parameterName value="@Exception"/>
<dbType value="String"/>
<size value=""/>
<layout type="log4net.Layout.ExceptionLayout"/>
</parameter>
</appender> <root>
<level value="ALL"/>
<appender-ref ref="AdoNetAppender"/>
</root>
</log4net>
这里边需要先把表建立起来..插入数据库的T-SQL语句也已经在里边配置过了..相信大家可以根据这个语句来建表了..所以具体的建表语句就不写了..
需要说下的是..在上文配置中的最后一个节点..<root> 这里边的节点 level..我配置的是All..就是说所有级别都是写在这里边的..没有区分的特别清楚..大家有兴趣了可以深入研究一下..
然后在程序开始初期..配置这么一句话..来初始化Log4net
log4net.Config.XmlConfigurator.Configure();
Web程序配置到 Global.asax中..
// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
log4net.Config.XmlConfigurator.Configure();
ModelBinders.Binders[typeof(DataTable)] = new DataTableModelBinder(); AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}
WinFrom或者WindowService程序中配置到Program.cs中..
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static void Main()
{
log4net.Config.XmlConfigurator.Configure(); ServiceBase[] ServicesToRun = new ServiceBase[]
{
new Hello()
};
ServiceBase.Run(ServicesToRun);
}
}
在你页面中 要用的时候..需要定义Log对象了..
log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public Service1()
{
InitializeComponent();
} protected override void OnStart(string[] args)
{
log.Info("服务成功启动了!!");
} protected override void OnStop()
{
log.Info("服务被关闭了!!");
}
}
上边是我的用法..大家也可以直接使用
log4net.ILog log = log4net.LogManager.GetLogger("LogsFileAppender");
括号中的值是你在配置文件中配置的那个 appender name..
剩下的就是使用了..Log4net的日志级别分为五类..
从最严重到最轻依次为:
Fatal 毁灭
Error 异常
Warn 警告
Debug 调试
Info 普通信息
可以直接使用上边命名对象 Log 的同名方法来记录日志..
另外再说一点是配置文件中的文件书写方式..
其中layout节点的配置说明:
%m(message):输出的日志消息;
%n(newline):换行;
%d(datetime):输出当前语句运行的时刻;
%r(runtime):输出程序从运行到执行到当前语句时消耗的毫秒数;
%t(threadid):当前语句所在的线程ID ;
%p(priority): 日志的当前日志级别;
%c(class):当前日志对象的名称;
%L:输出语句所在的行号;
%F:输出语句所在的文件名;
%-:表示最小长度为10,如果不够,则用空格填充;
Over....
Log4Net使用方法的更多相关文章
- C#中log4net使用方法(一)
Log4net是一个第三方开源组件,它设计的主要目的是组合,生成日志信息,同时将配置保存到各种存储介质或者展现平台中,在实际项目中,Log4net可以保存系统运行情况,可以在系统出现异常时,根据保存的 ...
- Log4net入门使用
简介 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题. 经验表明,日志 ...
- log4net入门
简介 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题. 经验表明,日志 ...
- C#中使用Log4net日志输出到本地文件、Textbox或Listview
网上很多配置log4net的方法,但是排行靠前的 根本就没有说明清除,导致浪费了两个小时来搞清楚如何配置,真是无语,特写此文,给那些刚接触log4net的朋友 1.参考链接:http://blog.s ...
- 使用 Log4Net 记录日志
第一步:下载Log4Net 下载地址:http://logging.apache.org/log4net/download_log4net.cgi 把下载的 log4net-1.2.11-bin-n ...
- [转]C#使用Log4Net记录日志
第一步:下载Log4Net 下载地址:http://logging.apache.org/log4net/download_log4net.cgi 把下载的 log4net-1.2.11-bin-n ...
- [翻译]log4net教程
原文:log4net Tutorial 一.基础: log4net分为三部分:配置.设置和调用.配置通常是在app.webconfig或web.config文件中:为了增加灵活性,我们也可以使用单独的 ...
- log4net.dll配置以及在项目中应用 zt
1 首先在项目中引用log4net.dll,然后项目中添加一个配置文件log4net.config <?xml version="1.0" encoding="ut ...
- log4net日志组件
转载:http://www.cnblogs.com/knowledgesea/archive/2012/04/26/2471414.html 一.什么是log4net组件 Log4net是基于.net ...
随机推荐
- Maven-pom.xml详解
(看的比较累,可以直接看最后面有针对整个pom.xml的注解) pom的作用 pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵 ...
- ajax技术应用(转)
ajax简介 AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.Ajax不 ...
- AfNetworking 3.0源码解读
做ios开发,AFNetworking 这个网络框架肯定都非常熟悉,也许我们平时只使用了它的部分功能,而且我们对它的实现原理并不是很清楚,就好像总是有一团迷雾在眼前一样. 接下来我们就非常详细的来读一 ...
- css-使用line-height实现垂直居中的一些问题
网上都是这么说的,把line-height值设置为height一样大小的值可以实现单行文字的垂直居中.这句话确实是正确的,但其实也是有问题的.问题在于height,看我的表述:"把line- ...
- 【BZOJ-3308】九月的咖啡店 最大费用最大流 + 线性筛素数
3308: 九月的咖啡店 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 159 Solved: 56[Submit][Status][Discuss ...
- 【bzoj1001】 BeiJing2006—狼抓兔子
http://www.lydsy.com/JudgeOnline/problem.php?id=1001 (题目链接) 题意 给出一张图,求最小割. Solution1 最小割=最大流,所以直接Din ...
- Linux的#和$区别
[#]代表 root权限[$]代表普通用户 如果更改了/etc/profile , 或~/.bashrc等文档,可以用任何符号来代替它们. linux窗口下的[root@locate~]其中的[~]代 ...
- 微软注册dll在dotnet开发时起到缓存的作用
经过试验,我发觉只要是注册了dll之后,会在全局的环境中得到很好的体现,比如无需指定具体物理路径的dll引用,搜索即可引用等,同时也得到一点: 1.会缓存起这个dll先,在不重启电脑的情况,本地物理路 ...
- PHP Datatype Conversion Safety Risk、Floating Point Precision、Operator Security Risk、Safety Coding Principle
catalog . 引言 . PHP operator introduction . 算术运算符 . 赋值运算符 . 位运算符 . 执行运算符 . 递增/递减运算符 . 数组运算符 . 类型运算符 . ...
- 数据结构作业——N!的位数(斯特灵公式)
Description 求N!的位数 Input 输入第一行为一个正整数 n(1<=n<=25000). Output 输出 n!的位数. Sample Input 1020 Sample ...