log4net

C# Log4net记录日志

£可爱£侵袭症+ 提交于 2020-08-18 10:46:32
前言 1、需求 需求很简单,就是在C#开发中高速写日志。比如在高并发,高流量的地方需要写日志。我们知道程序在操作磁盘时是比较耗时的,所以我们把日志写到磁盘上会有一定的时间耗在上面,这些并不是我们想看到的。 解决方案 2.1、简单原理说明 使用 列队 先缓存到内存,然后我们一直有个 线程 再从列队中写到磁盘上,这样就可以高速高性能的写日志了。因为速度慢的地方我们分离出来了,也就是说程序在把日志扔给列队后,程序的日志部分就算完成了,后面操作磁盘耗时的部分程序是不需要关心的,由另一个线程操作。 俗话说,鱼和熊掌不可兼得,这样会有一个问题,就是如果日志已经到列队了这个时候程序崩溃或者电脑断电都会导致日志部分丢失,但是有些地方为了高性能的写日志,是否可以忽略一些情况,请各位根据情况而定。 2.2、示例图 关键代码部分 这里写日志的部分LZ选用了比较常用的 log4net ,当然也可以选择其他的日志组件,比如nlog等等。 3.1、日志至列队部分 第一步我们首先需要把日志放到列队中,然后才能从列队中写到磁盘上。 public void EnqueueMessage( string message, FlashLogLevel level, Exception ex = null ) { if ((level == FlashLogLevel.Debug && _log

WPF 通过 dotnet core 发布单文件时 log4net 无法使用

柔情痞子 提交于 2020-08-14 20:25:44
在使用 dotnet core 版本的 WPF 可以将发布文件打包为一个exe文件,但是此时小伙伴发现 log4net 无法运行,因为 log4net 说找不到配置文件 这是 子铭 小伙伴问我的问题,我尝试创建一个 dotnet core 的 WPF 程序,使用下面代码创建的 dotnet new wpf -o HudidaneahaFekujarchebea 在从另一个项目复制了 log4net 的配置的时候,我发现了一个细节,在运行 log4net 默认会读取 Log.config 配置文件,而读取的文件夹是应用程序所在的文件夹,如果通过下面代码将软件发布单文件,那么因为 log4net 需要读取而配置文件找不到而不能使用 dotnet publish -r win10-x64 /p:PublishSingleFile=true 解决方法是 启动时写入配置文件 重定向配置文件 通过代码配置 不用log4net都成 关于写日志请看 程序猿修养 日志应该如何写 dotnet core 发布只有一个 exe 的方法 我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新 如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入

C# Log4Net学习笔记:记录日志到数据库

主宰稳场 提交于 2020-08-11 15:38:36
一、数据准备 在SQL Server中创建记录日志的数据表LogDetail: CREATE TABLE [ dbo ] . [ LogDetail ] ( [ LogID ] [ INT ] IDENTITY ( 1 , 1 ) NOT NULL , -- 自增ID [ LogDate ] [ DATETIME ] NULL , -- 日志时间 [ LogLevel ] [ NVARCHAR ] ( 10 ) NULL , -- 日志级别 [ LogThread ] [ NVARCHAR ] ( 10 ) NULL , -- 线程ID [ Logger ] [ NVARCHAR ] ( 50 ) NULL , --日志名称 [ LogMessage ] [ NVARCHAR ] ( 3000 ) NULL , -- 日志内容 CONSTRAINT [ PK_LogDetail ] PRIMARY KEY CLUSTERED ( [ LogID ] ASC ) WITH (PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [ PRIMARY ] ) ON [ PRIMARY ] 在此表中

Log4Net config with .NET Core app

只谈情不闲聊 提交于 2020-08-07 01:33:21
问题 I need to use log4net on a new .NET Core app that references some just written assemblies which uses log4net. I've searched around but all the examples passes just a FileInfo to the log4net.Config.XmlConfigurator.Configure but using the latest version asks for a first paremeter of type ILoggerRepository repository What should I pass? My code is public static void Main(string[] args) { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile(

使用log4net将日志文件输出为csv格式

老子叫甜甜 提交于 2020-08-06 19:42:41
  我们在编写程序时,会在程序运行过程中记录一些日志。log4net作为一款经久耐用的日志组件,值得我们信赖。在中小型公司中,往往没有专业的日志服务器来处理应用程序产生的日志,而格式化不好的日志文件又为上线后日志的统计、分析、查找造成了困难。   Excel作为一款常用的办公软件,用来处理一些中小数量级的数据还是游刃有余的。如果log4net输出的日志能够直接导入Excel,那么查询和分析起来岂不是要快很多?   我们有很多方法可以实现这个功能,csv的优势是其文件格式比较简单,可以用任意的文本编辑器打开,而且解析起来比较方便。效果如下:   新建控制台程序,引用log4net类库这些步骤不必说,直接进入正题,我们需要增加4个类文件 CsvTextWriter 、 NewFieldConverter 、 EndRowConverter 和 CsvPatternLayout。 CsvTextWriter.cs 1 using System.IO; 2 using System.Text; 3 4 namespace CoderBusy.Log4Net.Layout 5 { 6 public class CsvTextWriter : TextWriter 7 { 8 private readonly TextWriter _textWriter; 9 10 public

.Net常用中间件

ⅰ亾dé卋堺 提交于 2020-08-06 13:14:18
什么是中间件 中间件是介于操作系统和应用软件之间,为应用软件提供服务功能的软件,有消息中间件,交易中间件,应用服务器等。由于介于两种软件之间,所以,称为中间件。 简单讲,中间件就是非业务的技术类组件。 使用中间件的好处 具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。 中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。 .Net常见的中间件 Log4Net、NLog(日志记录) Unity、Ninject(IOC容器) EF框架、NHibernate(ORM框架) Quartz.NET(开源的作业调度框架) Socket(通讯)、Redis(缓存) 来源: oschina 链接: https://my.oschina.net/u/4299292/blog/4474147

《ASP.NET MVC 4 实战》

自作多情 提交于 2020-08-05 05:03:28
**《ASP.NET MVC 4 实战》 ========== ========== ========== [作者] (美) Jeffrey Palermo (美) Jimmy Bogard (美) Eric Hexter (美) Matthew Hinze (英) Jeremy Skinner [译者] (中) 徐燕萍 李萍 林逸 [出版] 人民邮电出版社 [版次] 2014年05月 第1版 [印次] 2014年05月 第1次 印刷 [定价] 69.00元 ========== ========== ========== 【第01章】 (P003) Web 本质上是无状态的。 【第02章】 (P015) 框架是如何知道将 URL 映射到一个特定的控制器动作的?答案就在 Global.asax 文件的 RegisterRoutes 方法中。 Web API 是微软随 ASP.NET MVC 4 一起发布的一个 Web 服务框架。 (P016) ViewBag 本质上是一个字典 —— 它提供了一种存储数据的方式,这些数据随后能够在视图中进行访问。 (P017) @ 前缀表示 HTML 与代码之间的转换。 【第03章】 (P032) 视图的职责看似很简单。它的生存目标是取得一个送给它的模型,并用这个模型来渲染内容。由于控制器及相关服务已经执行了所有业务逻辑,并将结果包装成一个模型对象

.Net Core +EF Core+Log4Net基本三层架构搭建

守給你的承諾、 提交于 2020-08-04 17:47:01
.Net Core +EF Core+Log4Net基本三层架构搭建 一.项目架构搭建 二.内置IOC容器 (1) 业务逻辑层依赖注入 (2) EF Core上下文依赖注入 三.集成Log4Net 四.使用session服务 五.全局注册异常处理过滤器 .Net Core +EF Core+Log4Net基本三层架构搭建) 一.项目架构搭建 UI层引用 IService、Service、Model、Utility、DataEntity(优化后可以不引用) IService 引用 Model Service 引用 IService Model、DataEntity、Utility DataEntity、Service、MVC Core、WebApi Core安装 EF Core nuget包 二.内置IOC容器 (1) 业务逻辑层依赖注入 (2) EF Core上下文依赖注入    注意: 使用EF Core的方式有Code First From Database和Code First两种,    具体使用请参考百度 三.集成Log4Net    可以通过以下两种方式写log 四.使用session服务   可以通过: HttpContext.Session.SetString(“key”)–>添加session数据    可以通过:HttpContext.Session