asp.net利用log4net写入日志到SqlServer数据库

asp.net core+log4net 写入日志到sqlserver asp.net core版本:5.0 log4net:2.0 一般情况下,我比较习惯把日志记录到日志文件中。但这种方式有一个缺点:把项目发布到生产环境后,每次查看日志都需要远程登录到服务器去查看日志文件,有点不太方便,所以我想把日志写入到数据库中。 首先我们新建一个asp.net core webapi项目,nuget添加如下包: 向日志系统中添加log4net: Host.CreateDefaultBuilder(args) .ConfigureWebH 阅读详情

asp.net利用log4net写入日志到SqlServer数据库,Log4net是一个开源的错误日志记录项目,易用性强,源自log4j,品质值得信赖。 下面就我的安装部署log4net到MS sql server的经验与大家分享。

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

protected     void   Application_Start(Object sender, EventArgs e)  
        { 
//  
            log4net.Config.XmlConfigurator.Configure(  new   System.IO.FileInfo(  " log4net.config "  )); 
        } 

 

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

[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.confgi在主项目根目录下:与web.config同路径,之所以不写入web,config文件, 是因为这样可以单独修改调试部署,也就是非侵入式安装的思想。呵呵。

内容大概如下:

<? xml version="1.0" ?>   
< configuration >   
    
< configSections >   
        
< section  name ="log4net"  type ="log4net.Config.Log4NetConfigurationSectionHandler, log4net"   />   
    
</ configSections >   
    
<!-- Log4net Begin by Tony  2008.11.20 -->   
    
< log4net >   
        
< appender  name ="ADONetAppender"  type ="log4net.Appender.ADONetAppender" >   
            
< bufferSize  value ="10"   />   
            
< connectionType  value ="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"   />   
            
< connectionString  value ="DATABASE=DBErrorLogs;SERVER=myserver;UID=user;PWD=pwdpwd;Connect Timeout=15;"   />   
            
< commandText  value ="INSERT INTO ErrorLog ([dtDate],[sThread],[sLevel],[sLogger],[sMessage],[sException]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"   />   
            
< parameter >   
                
< parameterName  value ="@log_date"   />   
                
< dbType  value ="DateTime"   />   
                
< layout  type ="log4net.Layout.RawTimeStampLayout"   />   
            
</ parameter >   
            
< parameter >   
                
< parameterName  value ="@thread"   />   
                
< dbType  value ="String"   />   
                
< size  value ="100"   />   
                
< 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 ="500"   />   
                
< layout  type ="log4net.Layout.PatternLayout" >   
                    
< conversionPattern  value ="%logger"   />   
                
</ layout >   
            
</ parameter >   
          
< parameter >   
                
< parameterName  value ="@message"   />   
                
< dbType  value ="String"   />   
                
< size  value ="3000"   />   
                
< layout  type ="log4net.Layout.PatternLayout" >   
                    
< conversionPattern  value ="%m"   />   
                
</ layout >   
            
</ parameter >   
            
< parameter >   
                
< parameterName  value ="@exception"   />   
                
< dbType  value ="String"   />   
                
< size  value ="4000"   />   
                
< 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 >   
        
<!--  specify the level for some specific categories  -->   
        
< logger  name ="iNotes" >   
            
< level  value ="WARN" />   
            
< level  value ="INFO" />   
            
< level  value ="DEBUG" />   
            
< level  value ="FINE" />   
            
< appender-ref  ref ="ADONetAppender" />   
        
</ logger >   
        
< logger  name ="StellaLogger" >   
            
< level  value ="ALL" />   
            
< appender-ref  ref ="AdoNetAppender"   />   
        
</ logger >   
    
</ log4net >   
    
<!-- Log4net End -->   
</ configuration >   

 

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

 

数据库生成脚本

CREATE   TABLE   [ dbo ] . [ ErrorLog ] (   
    
[ nId ]   [ bigint ]   IDENTITY ( 1 , 1 )  NOT   NULL ,   
    
[ dtDate ]   [ datetime ]   NOT   NULL ,   
    
[ sThread ]   [ varchar ] ( 100 )  NOT   NULL ,   
    
[ sLevel ]   [ varchar ] ( 200 )  NOT   NULL ,   
    
[ sLogger ]   [ varchar ] ( 500 )  NOT   NULL ,   
    
[ sMessage ]   [ varchar ] ( 3000 )  NOT   NULL ,   
    
[ sException ]   [ varchar ] ( 4000 )  NULL ) 

 

 

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

private   static  log4net.ILog myLogger  =  log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);  

 

给出一个例子

private   void  TestLog()   
        {   
            
try   
            {   
                
//    
            }   
            
catch  (Exception ex)   
            {   
                Loghandle by Tony 
2008.11 . 21 #region  Loghandle by Tony 2008.11.21   
                
string  loginid  =  EmptyString;   
                
// if (user != null) { loginid = user.LoginID; }   
                myLogger.Error(GetErrorMessage(loginid,  1 ), ex);   
                
// Debug("系统已记录错误,请联系管理员!"); return;   
                
// Debug(ErrorHandle.GetErrorInfoByID(999), this.ClientID); return;  
                 #endregion    
            }   
              
        }  

 

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

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

 

来自:http://www.cnblogs.com/greatandforever/archive/2010/10/11/1848043.html

.net 日志 1、nuget引入log4net、Microsoft.Extensions.Logging.Log4Net.AspNetCore这2个2、引入配置文件,可以直接去官网()复制下来,放到项目目录下面,设置成始终复制,因为这个文件最终要到我们项目运行目录下面去3、要在program.cs文件配置4、注入到构造函数,然后使用也可以注入一个loggerFactory,通过loggerFactory来创建日志实例。 阅读详情

相关推荐

net6 控制台+ log4net+写数据库+自定义字段

net6 控制台+ log4net+写数据库+自定义字段

log4net写SQLServer数据库日志的配置方法

数据库日志表的准备 在数据库中准备一个这样的表,mail_web_log: 生成脚本: CREATE TABLE [dbo].[m...

weixin_33725722的博客 178

log4net写入SQL server数据库(测试案例)

log4net写入SQL server数据库(测试案例) 本案例无法写入数据库,所以不想误导各位,只是上传资源生成url供别人查阅

net6 控制台+ log4net+写数据库+自定义字段 小结

使用过程 1、引用log4net、system.Data.SqlClient 2、创建log4net.config文件 <?xml version="1.0" encoding="utf-8" ?> <log4net> <!--根配置--> <root> <!--日志级别:可选值: ERROR > WARN > INFO > DEBUG --> <level value="ERROR"/> &l

朱朱家园 2105

C# 利用log4net 把日志写入到数据库

C# 利用log4net 把日志写入到数据库

log4net写入sql server数据库实例

通过log4net在mvc 框架下,将日志写入sql server数据库实例. 例子可直接执行。

Raspberry Pi Pico MicroPython入门:硬件抽象与烧录实战

MicroPython 是面向嵌入式设备的轻量级 Python 运行时,通过硬件抽象层(HAL)将底层寄存器操作封装为直观的 machine 模块接口,显著降低 RP2040 开发门槛。其核心原理在于固件预编译、UF2 格式零驱动烧录、以及基于 PIO 和定时器的实时性保障机制。技术价值体现在调试效率提升、外设初始化简化和硬件行为直觉培养,广泛应用于传感器采集、LED 控制、串口通信等物联网入门场景。本文聚焦 Raspberry Pi Pico 平台,详解 MicroPython 固件选择、BOOTSEL

weixin_34277853的博客 395

芯片设计流程中的def文件

在实际的DEF文件中,每个部分都包含了与实际设计相关的详细信息,这个模板只展示了每个部分的基本结构。在实际应用中,DEF文件通常由EDA(电子设计自动化)工具在完成布局(Placement)和布线(Routing)步骤后自动生成,在集成电路设计中,DEF(Design Exchange Format)文件的模板具体内容会依设计的复杂性和特定需求而变化。简而言之,LEF文件提供了单元的物理特性和规则,而DEF文件使用这些规则来确定单元。)文件描述了特定设计中所有物理元素的精确放置和连线信息。

qq_36045093的博客 4862

asp.net利用log4net写入日志到SqlServer数据库[整理]

asp.net利用log4net写入日志到SqlServer数据库,Log4net是一个开源的错误日志记录项目,易用性强,源自log4j,品质值得信赖。 第一步:下载log4net的Dll文件并引入到项目中,在你的web主项目(比如MainWeb.csproj)添加对log4net.dll的引用。 第二步:在相应的Globall.cs文件中的Application_Start 事件中写入 p...

weixin_30794491的博客 190

WPF实战:利用Live Charts实现高性能动态曲线可视化

本文详细介绍了如何在WPF中使用Live Charts实现高性能动态曲线可视化,特别适用于工业监控和金融分析等实时数据场景。通过增量渲染、内存复用和硬件加速等核心技术,Live Charts能够高效处理高频数据更新,显著提升图表流畅度。文章提供了从基础实现到工业级优化的完整解决方案,帮助开发者应对各种性能挑战。

weixin_29189373的博客 406

二次开发vba_CATIA VBA(VBS)二次开发:使用Search批量选择元素

在CATIA二次开发中很多在程序中进行自动交互的方法或函数都需要使用选择集作为参数,将几何元素按照要求批量添加到选择集中也是实现程序自动运行的有效方法。在前面的文章《CATIA使用VBA(VBS)二次开发时用户的交互选择》和《CATIA使用VBA(VBS)二次开发时工程图和草图位置的交互选择函数Indicate2D》中介绍了在CATIA VBA(VBS)二次开发中用户和选择集之间的交互操...

weixin_32497403的博客 1321

一起谈.NET技术,asp.net利用log4net写入日志到SqlServer数据库

  asp.net利用log4net写入日志到SqlServer数据库,Log4net是一个开源的错误日志记录项目,易用性强,源自log4j,品质值得信赖。 下面就我的安装部署log4net到MS sql server的经验与大家分享。   下载log4net的Dll文件并引入到项目中,在你的web主项目(比如MainWeb.csproj)添加对log4net.dll的引用,并在相应的Global...

weixin_34129145的博客 174

ardupilot开发 --- mavlink签名加密 篇

ardupilot开发 --- mavlink签名加密

记录老板的每次pua,分享领导每天的毒鸡汤... 1236

log4net 将日志写入数据库

asp.net利用log4net写入日志到SqlServer数据库,Log4net是一个开源的错误日志记录项目,易用性强,源自log4j,品质值得信赖。 下面就我的安装部署log4net到MS sql server的经验与大家分享。   下载log4net的Dll文件并引入到项目中,在你的web主项目(比如MainWeb.csproj)添加对log4net.dll的引用,并在相...

weixin_33739646的博客 2090

GPU 运维实战:H100/H800/B300 换卡与压测

(烧多久、看什么、什么算合格)。文末还给了一个能直接跑的验收判定脚本,三个真实场景的裁决输出都在。

老韩的Linux云计算架构师进阶之路 270

SKUA-GOCAD入门教程-第七节 点的创建与编辑3

本文介绍了四种从井数据创建点集的方法

江洋大葱的博客 963

Log4Net 日志写入 SqlServer 完整实现

这张表的字段,要和后面。,并在根节点中引用它。

靡不有初,鲜克有终 30

自抗扰控制(ADRC)理论与工程实践:8.2 模糊ADRC、神经网络ADRC等智能融合变体

智能融合ADRC变体概述 自抗扰控制(ADRC)与智能控制方法(如模糊逻辑、神经网络)的融合,旨在突破传统ADRC在非线性、时变系统中的应用局限。智能融合ADRC主要通过以下方式实现性能提升: 模糊ADRC 参数自整定:利用模糊推理在线调节ADRC带宽参数,实现自适应控制。 非线性反馈:用模糊控制器替代线性PD,灵活设计非线性控制策略。 优势:融入专家经验,无需精确模型;局限:依赖规则库设计,稳定性分析困难。 神经网络ADRC 增强ESO:用神经网络学习扰动动态,提高估计精度。

技术工作者 226

.net6使用Nlog生成日志文件和日志写入sqlserver数据库

我的另一篇使用log4net的 .net6使用 log4net 生成日志文件和日志写入sqlserver数据库 创建sqlserver的日志表 CREATE TABLE [dbo].[NLog]( [Id] [BIGINT] IDENTITY(1,1) NOT NULL, [Application] [NVARCHAR](50) NOT NULL, [Logged] [DATETIME] NOT NULL, [Level] [NVARCHAR](50) NOT NULL, [Message] .

qq_45798312的博客 3982

YOLOv8 超参数调优教程! 使用Ray Tune进行高效的超参数调优!

YOLOv8超参数调优教程!😎 使用Ray Tune进行高效的超参数调优!

Coding... 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

在asp.net core中,配置log4net将记录保存至sqlserver

简单码一下其中一种使用的方式,希望能有一点点帮助。平时懒得码字,如果有错误或遗漏,还望告知。 1.nuget 2.log4net.config 配置文件 其中SQL脚本使用了T-sql语法,实现了可null字段的输入。 该文件设置为copy always <?xml version="1.0" encoding="utf-8"?> <log4net debug="false"> <!-- appender: Define some output appe.

m0_62367247的博客 1613

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ASP.NET Core 使用Log4Net写文本日志和数据库日志

ASP.NET Core 使用Log4Net写文本日志和数据库日志

xzhu博客 1727

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

asp.net Web项目中使用Log4Net进行错误日志记录

这 <!--一个博主专栏付费入口结束--> <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-4a3473df85.css">...

weixin_44481764的博客 242

[C#]log4net写SQLServer数据库日志的配置方法

[C#]log4net写SQLServer数据库日志的配置方法编写者日期关键词郑昀@ultrapower2005-7-19ASP.NET Log4net sqlserver 数据库日志表的准备在数据库中准备一个这样的表,mail_web_log:生成脚本:CREATE TABLE [dbo].[mail_web_log] (    [nId] [int] IDENTITY (1, 1) NOT

软件开发资料汇总 606

dapper sqlserver mysql_SQLServer数据库之asp.net core使用Dapper操作Sqlserver/Oracle

本文主要向大家介绍了SQLServer数据库之asp.net core使用Dapper操作Sqlserver/Oracle,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助。无废话,还是先上git地址:https://gitee.com/jimmyTown_admin_admin/DapperInCoreDemo.git结构如下:1.在framework时代,Dapper...

weixin_35451402的博客 730
上一篇: 如何优化WebService进行大批量数据传送(WSE3.0应用技巧)
下一篇: 使用log4net记录日志到数据库(含有自定义属性)
aspnet2002web
博客等级 码龄21年 482粉丝 310原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值