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="10" />
<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="1"/>
<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="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread"/>
</layout>
</parameter>
<parameter>
<parameterName value="@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>
<parameter>
<parameterName value="@Exception"/>
<dbType value="String"/>
<size value="2000"/>
<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:表示最小长度为10,如果不够,则用空格填充;
Over....

浙公网安备 33010602011771号