log4net 在asp.net WEB应用程序中的配置
我是一个三层架构的应用程序,将日志记录放在了业务层,并写入了数据库,整个使用操作步骤为以下步骤。
第一步 编写配置文件
文件名称为 log4net.config 内容如下
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
<bufferSize value="1" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="server=fogwang;database=zzrd;uid=sa;pwd=sa;pooling=false;" />
<commandText value="INSERT INTO LogInfo ([dtDate],[sThread],[sLevel],[sLogger], [ClientIP], [PageUrl],[sMessage],[sException],OpreateType,UserAccount,UIOrSysAdmin,LogType) VALUES (@log_date, @thread, @log_level, @logger, @ClientIP, @PageUrl,@message, @exception,@OpreateType,@UserAccount,@UIOrSysAdmin,@LogType)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%t" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="200" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%p" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="200" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@ClientIP" />
<dbType value="String" />
<size value="50"></size>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%properties{ClientIP}" />
</layout>
</parameter>
<parameter>
<parameterName value="@PageUrl" />
<dbType value="String" />
<size value="200"></size>
<layout type="log4net.Ext.Web.ReflectionLayout">
<conversionPattern value="%properties{RequestUrl}" />
</layout>
</parameter>
<parameter>
<parameterName value="@OpreateType" />
<dbType value="String" />
<size value="50"></size>
<layout type="log4net.Ext.Web.ReflectionLayout">
<conversionPattern value="%properties{OpreateType}" />
</layout>
</parameter>
<parameter>
<parameterName value="@UserAccount" />
<dbType value="String" />
<size value="50"></size>
<layout type="log4net.Ext.Web.ReflectionLayout">
<conversionPattern value="%properties{UserAccount}" />
</layout>
</parameter>
<parameter>
<parameterName value="@UIOrSysAdmin" />
<dbType value="String" />
<size value="10"></size>
<layout type="log4net.Ext.Web.ReflectionLayout">
<conversionPattern value="%properties{UIOrSysAdmin}" />
</layout>
</parameter>
<parameter>
<parameterName value="@LogType" />
<dbType value="String" />
<size value="50"></size>
<layout type="log4net.Ext.Web.ReflectionLayout">
<conversionPattern value="%properties{LogType}" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="3500" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%m" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="3500" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
<!-- setup the root category, add the appenders and set the default level -->
<root>
<level value="WARN"/>
<level value="INFO"/>
<level value="DEBUG"/>
<level value="FINE"/>
<appender-ref ref="ADONetAppender" />
</root>
<logger name="StellaLogger">
<level value="ALL"/>
<appender-ref ref="AdoNetAppender" />
</logger>
</log4net>
附:配置文件解释: log4net.Layout.PatternLayout中的转换模式(ConversionPattern) %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息 %n(new line):换行 %d(datetime):输出当前语句运行的时刻 %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数 %t(thread id):当前语句所在的线程ID %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等 %c(class):当前日志对象的名称,例如: 模式字符串为:%-10c -%m%n 代码为: ILog log=LogManager.GetLogger(“Exam.Log”); log.Debug(“Hello”); 则输出为下面的形式: Exam.Log - Hello %L:输出语句所在的行号 %F:输出语句所在的文件名 %-数字:表示该项的最小长度,如果不够,则用空格填充 例如,转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出: 176 [main] INFO org.foo.Bar - Located nearest gas station. 第二步骤在业务层的属性文件关联配置文件: [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4net/log4net.config", Watch = true)] 其中ConfigFile的属性为放在显示层中配置文件的位置 第三步在业务层中的使用: #region 删除记录
/// <summary>
/// 删除记录
/// </summary>
/// <param name="id">ID(可多个)</param>
/// <returns></returns>
public bool Delete ( string id )
{
DataTable dt= dal.getNewsList("id,title,typename"," in in("+id+")");
log4net.Ext.Web.IWebLog log = log4net.Ext.Web.WebLogManager.GetLogger(typeof(NewsBLL));
log.Info("删除新闻标题:" + dt.Rows[0]["title"] + "新闻编号:" + dt.Rows[0]["id"] + "类别:" + dt.Rows[0]["typename"], WebUtility.Comm.GetAdminOrUIUserCook()[0], WebUtility.Comm.GetIP(), WebUtility.Comm.GetUrl(), log4net.Ext.Web.WebLogImpl.OpreateType.删除, log4net.Ext.Web.WebLogImpl.UIOrSys.后台, log4net.Ext.Web.WebLogImpl.LogType.信息操作日志);
return dal.Delete ( id );
}
#endregion 第四步:读取操作日志: 数据层代码: public class LogOpreateDAL
{
public int Delete(string id)
{
return SqlHelper.ExecuteNonQuery(DBConn.GetSqlConn(), CommandType.Text, "Delete LogInfo Where LogID In(" + id + ")");
} public DataSet GetListByPage(string expcon, int pagesize, int CurrentPage, out int PageCount, out int RecordCount)
{
PagerDAL dal = new PagerDAL();
return dal.GetPagerList(DBConn.GetSqlConn(), "LogInfo", "LogId", 1, "*", pagesize, CurrentPage, expcon, out PageCount, out RecordCount);
} } 显示效果如下:
转载于:https://www.cnblogs.com/fogwang/archive/2011/10/21/2666611.html
log4net 在asp.net WEB应用程序中的配置相关推荐
- power bi报表服务器_如何将Power BI Report Server报表嵌入ASP.Net Web应用程序
power bi报表服务器 Every once in a while, teams from different functional areas of the business (i.e. bus ...
- vs2005新建项目中没有ASP.NET WEB应用程序
今天正准备使用vs 2005,发现根本打不开老师发过来的源代码Portal_Article.csproj文件,上网查了一下,好多人都说是是因为没有给vs 2005打补丁.我的新建项目里根本没有ASP. ...
- oracle web API,在Web API程序中使用Swagger做接口文档
#### 创建Web API程序 在VS2019中创建一个ASP.NET Web应用程序,选择Web API来创建RESTful的HTTP服务项目,构选MVC和Web API核心引用. #### 安装 ...
- Web应用程序中(VS2005+SP1)添加App_Code(转)
Web应用程序中(VS2005+SP1)添加App_Code 在Web应用程序中不能通过右键项目-〉"添加"-〉"添加ASP.NET文件夹"方式添加 .因为We ...
- ASP.NET Web 页面生命中的一天
ASP.NET Web 页面生命中的一天 Dino Esposito Wintellect 2003 年 8 月 适用于: Microsoft® ASP.NET 摘要:了解为 ASP.NET Web ...
- 新建网站与新建Asp.Net+Web+应用程序的区别
VS2005 VS2008新建网站--asp.net网站和新建项目里ASP.NET Web应用程序区别 WebApplication编程模型的优点: ●网站编译速度快,使用了增量编译模式,仅仅只有文件 ...
- SharePoint 2010无法使用外部asp.net web应用程序调试的解决办法
最近很朋友都在问这个问题. 通过外部asp.net web 应用程序测试SharePoint 2010 的API比较便捷和快速,相信很多人都碰到这个问题.运行环境是Windows Server 200 ...
- 将终结点图添加到你的ASP.NET Core应用程序中
在本文中,我将展示如何使用DfaGraphWriter服务在ASP.NET Core 3.0应用程序中可视化你的终结点路由.上面文章我向您演示了如何生成一个有向图(如我上篇文章[译]使用DOT语言和G ...
- DotNetCore Web应用程序中的Session管理
原文来自互联网,由长沙DotNET技术社区编译.如译文侵犯您的署名权或版权,请联系小编,小编将在24小时内删除.限于译者的能力有限,个别语句翻译略显生硬,还请见谅. 作者简介:Jon(Jonathan ...
最新文章
- 有关军事人机混合智能的再再思考
- bzoj 4237 稻草人
- hihoCoder1040 矩形判断
- 如何用python做词云图_科学网—如何用Python做词云?(基础篇视频教程) - 王树义的博文...
- 使用多线程一定提高效率吗?
- Opportunity的chance of success determination逻辑
- Pyalgotrade量化交易回测框架
- Scrapy周期性爬取(解决Unknown command: crawl报错)
- kafka 消费者API操作入门
- 为什么物理隔离的网络,也会中毒?怎么进行防护?
- TensorFlow学习笔记(3)——TensorFlow实现Word2Vec
- wap网站源码 php,DIYWAP免费PHP手机网站管理系统 v6.3
- QA与SQA到底有什么区别和联系?他们的职责和工作内容是什么?QC,QM又是什么?
- Java - 使用Cipher类实现加密(RSA)
- c语言rst关系,为什么服务器突然回复RST——小心网络中的安全设备
- iOS闪退的原因和方案总结
- linux下创建php文档,linux新建文件有哪些方法
- Leetcode——537. Complex Number Multiplication
- matlab的NNF算法,NNF是什么意思
- 温度报警课程设计报告
热门文章
- Py修行路 python基础 (二十)模块 time模块,random模块,hashlib模块,OS及sys模块...
- Qt 【遍历文件夹文件,为listwidgetItem设置图标】
- JAVA实现Excel的读写--poi
- GDB and core
- Arduino 各种模块篇 步进电机 step motor( 不用库,不用shield, 纯)
- Sharepoint学习笔记---SPList--创建一个带有Lookup字段的List
- 十条技巧 更聪明地使用Google搜索
- c++中堆、栈内存分配概念示例讲解
- c#多线程同步之EventWaitHandle使用
- 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include quot;StdAfx.hquot;”?