log4net写入到SQL server的基本配置(downmoon)

摘要:
Log4net是一个开源错误日志项目。它易于使用,源自log4j,质量可靠。让我们报告一下我在MSSqlserver上安装和部署log4net的经验。其他项目只需要引用dll。步骤3:添加logn4net。config在主项目的根目录中:路径与web相同。config,因此它不会写入web。config文件用于独立修改调试部署,这是非侵入式安装的思想。

log4net是一个开源的错误日志记录项目,易用性强,源自log4j,品质值得信赖。

下面汇报一下我的安装部署log4net到MS sql server的经验。

一、首先是下载log4net最新版

地址:http://logging.apache.org/log4net/

直接引用dll也行,我是把下载的源码在Vs2005下编译成log4net.dll

 二、在你的web主项目(比如MainWeb.csproj)添加对log4net.dll的引用,并在相应的Globall.cs文件中的Application_Start事件中写入

log4net写入到SQL server的基本配置(downmoon)第1张log4net写入到SQL server的基本配置(downmoon)第2张Code
log4net写入到SQL server的基本配置(downmoon)第3张protected void Application_Start(Object sender, EventArgs e) 
log4net写入到SQL server的基本配置(downmoon)第4张log4net写入到SQL server的基本配置(downmoon)第5张        
log4net写入到SQL server的基本配置(downmoon)第6张{/**/////
log4net写入到SQL server的基本配置(downmoon)第7张            log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));
log4net写入到SQL server的基本配置(downmoon)第8张        }

在这个项目对应的Assembly.cs文件中添加一行

log4net写入到SQL server的基本配置(downmoon)第9张log4net写入到SQL server的基本配置(downmoon)第10张Code
log4net写入到SQL server的基本配置(downmoon)第3张[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 

这里有个地方需要注意

如果我的主项目是纯粹的代码分离后的aspx\ascx文件, 不含cs文件,那么中需要在饱含cs文件的项目(比如common.web.csproj)文件中添加这两行代码

举个例子

解决方案如下:

MySolution.Sln

       |-----common.Web.csproj(包含cs文件)

       |-----Business1.Web.csproj(包含cs文件,继承自common.Web.csproj)

       |-----Business********.Web.csproj(包含cs文件,继承自common.Web.csproj)  

       |-----BusinessX.Web.csproj(包含cs文件,继承自common.Web.csproj) 

    |-----MainWeb.csproj(不包含cs文件)

此时, 只需要在 common.Web.csproj中做以上动作就可以了!其他项目只需要引用 dll即可。

 第三步:添加logn4net.config在主项目根目录下:与web.config同路径,之所以不写入web.config文件, 是因为这样可以单独修改调试部署,也就是非侵入式安装的思想。呵呵。

内容大概如下:

log4net写入到SQL server的基本配置(downmoon)第12张log4net写入到SQL server的基本配置(downmoon)第13张Code
log4net写入到SQL server的基本配置(downmoon)第3张<?xml version="1.0"?>
log4net写入到SQL server的基本配置(downmoon)第3张
<configuration>
log4net写入到SQL server的基本配置(downmoon)第3张    
<configSections>
log4net写入到SQL server的基本配置(downmoon)第3张        
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
log4net写入到SQL server的基本配置(downmoon)第3张    
</configSections>
log4net写入到SQL server的基本配置(downmoon)第3张
log4net写入到SQL server的基本配置(downmoon)第3张    
<!--Log4net Begin by Tony  2008.11.20-->
log4net写入到SQL server的基本配置(downmoon)第3张    
<log4net>
log4net写入到SQL server的基本配置(downmoon)第3张        
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
log4net写入到SQL server的基本配置(downmoon)第3张            
<bufferSize value="10" />
log4net写入到SQL server的基本配置(downmoon)第3张            
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
log4net写入到SQL server的基本配置(downmoon)第3张            
<connectionString value="DATABASE=DBErrorLogs;SERVER=myserver;UID=user;PWD=pwdpwd;Connect Timeout=15;" />
log4net写入到SQL server的基本配置(downmoon)第3张            
<commandText value="INSERT INTO ErrorLog ([dtDate],[sThread],[sLevel],[sLogger],[sMessage],[sException]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
log4net写入到SQL server的基本配置(downmoon)第3张            
<parameter>
log4net写入到SQL server的基本配置(downmoon)第3张                
<parameterName value="@log_date" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<dbType value="DateTime" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<layout type="log4net.Layout.RawTimeStampLayout" />
log4net写入到SQL server的基本配置(downmoon)第3张            
</parameter>
log4net写入到SQL server的基本配置(downmoon)第3张            
<parameter>
log4net写入到SQL server的基本配置(downmoon)第3张                
<parameterName value="@thread" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<dbType value="String" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<size value="100" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<layout type="log4net.Layout.PatternLayout">
log4net写入到SQL server的基本配置(downmoon)第3张                    
<conversionPattern value="%t" />
log4net写入到SQL server的基本配置(downmoon)第3张                
</layout>
log4net写入到SQL server的基本配置(downmoon)第3张            
</parameter>
log4net写入到SQL server的基本配置(downmoon)第3张            
<parameter>
log4net写入到SQL server的基本配置(downmoon)第3张                
<parameterName value="@log_level" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<dbType value="String" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<size value="200" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<layout type="log4net.Layout.PatternLayout">
log4net写入到SQL server的基本配置(downmoon)第3张                    
<conversionPattern value="%p" />
log4net写入到SQL server的基本配置(downmoon)第3张                
</layout>
log4net写入到SQL server的基本配置(downmoon)第3张            
</parameter>
log4net写入到SQL server的基本配置(downmoon)第3张            
<parameter>
log4net写入到SQL server的基本配置(downmoon)第3张                
<parameterName value="@logger" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<dbType value="String" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<size value="500" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<layout type="log4net.Layout.PatternLayout">
log4net写入到SQL server的基本配置(downmoon)第3张                    
<conversionPattern value="%logger" />
log4net写入到SQL server的基本配置(downmoon)第3张                
</layout>
log4net写入到SQL server的基本配置(downmoon)第3张            
</parameter>
log4net写入到SQL server的基本配置(downmoon)第3张            
<parameter>
log4net写入到SQL server的基本配置(downmoon)第3张                
<parameterName value="@message" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<dbType value="String" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<size value="3000" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<layout type="log4net.Layout.PatternLayout">
log4net写入到SQL server的基本配置(downmoon)第3张                    
<conversionPattern value="%m" />
log4net写入到SQL server的基本配置(downmoon)第3张                
</layout>
log4net写入到SQL server的基本配置(downmoon)第3张            
</parameter>
log4net写入到SQL server的基本配置(downmoon)第3张            
<parameter>
log4net写入到SQL server的基本配置(downmoon)第3张                
<parameterName value="@exception" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<dbType value="String" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<size value="4000" />
log4net写入到SQL server的基本配置(downmoon)第3张                
<layout type="log4net.Layout.ExceptionLayout" />
log4net写入到SQL server的基本配置(downmoon)第3张            
</parameter>
log4net写入到SQL server的基本配置(downmoon)第3张        
</appender>
log4net写入到SQL server的基本配置(downmoon)第3张        
<!-- setup the root category, add the appenders and set the default level -->
log4net写入到SQL server的基本配置(downmoon)第3张        
<root>
log4net写入到SQL server的基本配置(downmoon)第3张            
<level value="WARN"/>
log4net写入到SQL server的基本配置(downmoon)第3张            
<level value="INFO"/>
log4net写入到SQL server的基本配置(downmoon)第3张            
<level value="DEBUG"/>
log4net写入到SQL server的基本配置(downmoon)第3张            
<level value="FINE"/>
log4net写入到SQL server的基本配置(downmoon)第3张            
<appender-ref ref="ADONetAppender" />
log4net写入到SQL server的基本配置(downmoon)第3张        
</root>
log4net写入到SQL server的基本配置(downmoon)第3张        
<!-- specify the level for some specific categories -->
log4net写入到SQL server的基本配置(downmoon)第3张        
<logger name="iNotes">
log4net写入到SQL server的基本配置(downmoon)第3张            
<level value="WARN"/>
log4net写入到SQL server的基本配置(downmoon)第3张            
<level value="INFO"/>
log4net写入到SQL server的基本配置(downmoon)第3张            
<level value="DEBUG"/>
log4net写入到SQL server的基本配置(downmoon)第3张            
<level value="FINE"/>
log4net写入到SQL server的基本配置(downmoon)第3张            
<appender-ref ref="ADONetAppender"/>
log4net写入到SQL server的基本配置(downmoon)第3张        
</logger>
log4net写入到SQL server的基本配置(downmoon)第3张        
<logger name="StellaLogger">
log4net写入到SQL server的基本配置(downmoon)第3张            
<level value="ALL"/>
log4net写入到SQL server的基本配置(downmoon)第3张            
<appender-ref ref="AdoNetAppender" />
log4net写入到SQL server的基本配置(downmoon)第3张        
</logger>
log4net写入到SQL server的基本配置(downmoon)第3张    
</log4net>
log4net写入到SQL server的基本配置(downmoon)第3张    
<!--Log4net End-->
log4net写入到SQL server的基本配置(downmoon)第3张
log4net写入到SQL server的基本配置(downmoon)第3张
log4net写入到SQL server的基本配置(downmoon)第3张
</configuration>
log4net写入到SQL server的基本配置(downmoon)第3张

具体的可以看看官方文档

http://logging.apache.org/log4net/release/sdk/index.html

基本完成了!需要注意的一个参数

<bufferSize value="10" />,表示是记录10 条到缓冲区,满10条后再写入SQL server

调试时可以改为1,实际应用建议为100

数据库生成脚本

log4net写入到SQL server的基本配置(downmoon)第97张log4net写入到SQL server的基本配置(downmoon)第98张Code
log4net写入到SQL server的基本配置(downmoon)第3张SET ANSI_NULLS ON
log4net写入到SQL server的基本配置(downmoon)第3张
GO
log4net写入到SQL server的基本配置(downmoon)第3张
log4net写入到SQL server的基本配置(downmoon)第3张
SET QUOTED_IDENTIFIER ON
log4net写入到SQL server的基本配置(downmoon)第3张
GO
log4net写入到SQL server的基本配置(downmoon)第3张
log4net写入到SQL server的基本配置(downmoon)第3张
SET ANSI_PADDING ON
log4net写入到SQL server的基本配置(downmoon)第3张
GO
log4net写入到SQL server的基本配置(downmoon)第3张
log4net写入到SQL server的基本配置(downmoon)第3张
CREATE TABLE [dbo].[ErrorLog](
log4net写入到SQL server的基本配置(downmoon)第3张    
[nId] [bigint] IDENTITY(1,1NOT NULL,
log4net写入到SQL server的基本配置(downmoon)第3张    
[dtDate] [datetime] NOT NULL,
log4net写入到SQL server的基本配置(downmoon)第3张    
[sThread] [varchar](100NOT NULL,
log4net写入到SQL server的基本配置(downmoon)第3张    
[sLevel] [varchar](200NOT NULL,
log4net写入到SQL server的基本配置(downmoon)第3张    
[sLogger] [varchar](500NOT NULL,
log4net写入到SQL server的基本配置(downmoon)第3张    
[sMessage] [varchar](3000NOT NULL,
log4net写入到SQL server的基本配置(downmoon)第3张    
[sException] [varchar](4000NULL,
log4net写入到SQL server的基本配置(downmoon)第3张 
CONSTRAINT [PK_ErrorLog] PRIMARY KEY CLUSTERED 
log4net写入到SQL server的基本配置(downmoon)第3张(
log4net写入到SQL server的基本配置(downmoon)第3张    
[nId] ASC
log4net写入到SQL server的基本配置(downmoon)第3张)
WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ONON [PRIMARY]
log4net写入到SQL server的基本配置(downmoon)第3张
ON [PRIMARY]
log4net写入到SQL server的基本配置(downmoon)第3张
log4net写入到SQL server的基本配置(downmoon)第3张
GO
log4net写入到SQL server的基本配置(downmoon)第3张
log4net写入到SQL server的基本配置(downmoon)第3张
SET ANSI_PADDING OFF
log4net写入到SQL server的基本配置(downmoon)第3张
GO
log4net写入到SQL server的基本配置(downmoon)第3张
log4net写入到SQL server的基本配置(downmoon)第3张
ALTER TABLE [dbo].[ErrorLog] ADD  DEFAULT (getdate()) FOR [dtDate]
log4net写入到SQL server的基本配置(downmoon)第3张
GO
log4net写入到SQL server的基本配置(downmoon)第3张
log4net写入到SQL server的基本配置(downmoon)第3张

 第四步:

在需要记录的每个类中添加如下代码

log4net写入到SQL server的基本配置(downmoon)第131张log4net写入到SQL server的基本配置(downmoon)第132张Code
log4net写入到SQL server的基本配置(downmoon)第3张private static log4net.ILog myLogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

给出一个例子

log4net写入到SQL server的基本配置(downmoon)第134张log4net写入到SQL server的基本配置(downmoon)第135张Code
log4net写入到SQL server的基本配置(downmoon)第3张 private void TestLog()
log4net写入到SQL server的基本配置(downmoon)第4张log4net写入到SQL server的基本配置(downmoon)第5张        
log4net写入到SQL server的基本配置(downmoon)第6张{
log4net写入到SQL server的基本配置(downmoon)第7张            
try
log4net写入到SQL server的基本配置(downmoon)第141张log4net写入到SQL server的基本配置(downmoon)第142张            
log4net写入到SQL server的基本配置(downmoon)第6张{
log4net写入到SQL server的基本配置(downmoon)第7张                
//
log4net写入到SQL server的基本配置(downmoon)第145张
            }

log4net写入到SQL server的基本配置(downmoon)第7张            
catch (Exception ex)
log4net写入到SQL server的基本配置(downmoon)第141张log4net写入到SQL server的基本配置(downmoon)第142张            
log4net写入到SQL server的基本配置(downmoon)第6张{
log4net写入到SQL server的基本配置(downmoon)第150张log4net写入到SQL server的基本配置(downmoon)第151张                
Loghandle by Tony 2008.11.21#region Loghandle by Tony 2008.11.21
log4net写入到SQL server的基本配置(downmoon)第7张                
string loginid = EmptyString;
log4net写入到SQL server的基本配置(downmoon)第7张                
//if (user != null) { loginid = user.LoginID; }
log4net写入到SQL server的基本配置(downmoon)第7张
                myLogger.Error(GetErrorMessage(loginid, 1), ex);
log4net写入到SQL server的基本配置(downmoon)第7张                
//Debug("系统已记录错误,请联系管理员!"); return;
log4net写入到SQL server的基本配置(downmoon)第7张                
//Debug(ErrorHandle.GetErrorInfoByID(999), this.ClientID); return;
log4net写入到SQL server的基本配置(downmoon)第145张
                #endregion

log4net写入到SQL server的基本配置(downmoon)第145张            }

log4net写入到SQL server的基本配置(downmoon)第7张           
log4net写入到SQL server的基本配置(downmoon)第8张        }

 记录的样式如下:

log4net写入到SQL server的基本配置(downmoon)第161张log4net写入到SQL server的基本配置(downmoon)第162张Code
log4net写入到SQL server的基本配置(downmoon)第3张
log4net写入到SQL server的基本配置(downmoon)第3张   
<table><tr><td>nId</td>      
log4net写入到SQL server的基本配置(downmoon)第3张   
<td>dtDate</td> <td>sThread</td> <td>sLevel</td> <td>sLogger</td> <td>sMessage</td> <td>sException</td>
log4net写入到SQL server的基本配置(downmoon)第3张   
</tr>
log4net写入到SQL server的基本配置(downmoon)第3张   
<tr><td>1        </td>
log4net写入到SQL server的基本配置(downmoon)第3张   
log4net写入到SQL server的基本配置(downmoon)第3张   
<td>2008-11-21 11:03:20.470</td> <td>1904</td> <td>ERROR Agronet.Product.Web.UI.Controls.Vegnet.Detail</td> <td>10.103.33.10</td> <td>System.OverflowException: 值对于 Int16 太大或太小。</td> <td> ---> System.OverflowException: 值对于 Int32 太大或太小。 在 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) 在 System.Int16.Parse(String s, NumberStyles style, NumberFormatInfo info) --- 内部异常堆栈跟踪的结尾 --- 在 System.Int16.Parse(String s, NumberStyles style, NumberFormatInfo info) 在 System.Int16.Parse(String s) 在 Agronet.Product.Web.UI.Controls.Vegnet.Detail.BindList() 位置 P:\Test\Web\UI\Controls\Vegnet\Detail.cs:行号 141</td>
log4net写入到SQL server的基本配置(downmoon)第3张
log4net写入到SQL server的基本配置(downmoon)第3张   
</tr></table>

OK! 结束,

Any question ,Please mail to tony(邀月)3w@live.cn

免责声明:文章转载自《log4net写入到SQL server的基本配置(downmoon)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇检测Tomcat日志异常自动重启大话项目管理工具之Confluence篇下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

axios用headers传参,设置请求头token

新建一个配置文件http.js   // 导入axios import axios from 'axios'; // 全局配置默认路由 axios.defaults.baseURL = 'http://192.168.0.157:8989/xxxx/xxx/'; axios.interceptors.request.use(function (confi...

解决Firefox显示“已阻止载入混合活动内容”的方法

解决方法如下: 方法1:让Firefox暂时不阻止 打开新标签页,在地址栏输入 about:config,进入配置页面。 搜索 security.mixed_content.block_active_content,将true改为false。 方法2:避免在HTTPS页面中包含HTTP的内容。 第1种方法很不现实,因为我们不能要求所有用户去改这项配置。...

kubernetes配置(kubeconfig)对多集群的访问

配置对多集群的访问 本文展示如何使用配置文件来配置对多个集群的访问。 在将集群、用户和上下文定义在一个或多个配置文件中之后,用户可以使用kubectl config use-context命令快速地在集群之间进行切换。 注意:用于配置集群访问的文件有时被称为kubeconfig 文件。 这是一种引用配置文件的通用方式,并不意味着存在一个名为kubecon...

kernel编译

Linux内核编译与安装 Linux内核介绍 Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统。内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制。Linux内核的一大特点就是采用了整体式结构,有很多过程组成,每个过程都可以独立编译,其模块机制又湿得内核保持独立而又易于扩充。Linux发行版实在Linux内核的...

在linux上通过ssh使用github

原文https://www.jianshu.com/p/599ae69b57c5 访问github有两种方式,第一种通过ssh,第二种通过https。通过ssh的方式需要在开发机上面配置ssh key,并把公钥同步到github。第二种方式则每次提交的时候都要输入github的账号密码。选用第二种方式访问github可以跳过步骤1、2 1、在linux...

vue实现PC端分辨率适配

lib-flexible + px2rem Loader lib-flexible 阿里伸缩布局方案 px2rem-loader:px转rem; 依赖 首先需要安装 vue-cli 脚手架,这里我安装的是 cli3。 项目初始化完成后,在项目目录中安装 lib-flexible 和 px2rem-loader。 npm install lib-flex...