Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .Net记录器(编写自己的vs log4net/enterprise Logger/nlog等)_C#_.net_Logging - Fatal编程技术网

C# .Net记录器(编写自己的vs log4net/enterprise Logger/nlog等)

C# .Net记录器(编写自己的vs log4net/enterprise Logger/nlog等),c#,.net,logging,C#,.net,Logging,我在一个IT部门工作,大约有50多名开发人员。过去大约有100多名开发商,但由于经济衰退而被削减 当我们的部门更大的时候,有一个雄心勃勃的努力建立了一个特殊的建筑小组 这个小组决定做的一件事是创建我们自己的内部记录器。他们认为这是一项如此简单的任务,我们可以花费资源自己完成。现在,我们在性能和查看生成的日志方面遇到了问题,一些员工感到沮丧,因为我们将资源花在了这样的基础设施上,而不是专注于服务我们的业务和使用log4net或Enterprise Logger等已经存在的东西 你能帮我列出你不应该

我在一个IT部门工作,大约有50多名开发人员。过去大约有100多名开发商,但由于经济衰退而被削减

当我们的部门更大的时候,有一个雄心勃勃的努力建立了一个特殊的建筑小组

这个小组决定做的一件事是创建我们自己的内部记录器。他们认为这是一项如此简单的任务,我们可以花费资源自己完成。现在,我们在性能和查看生成的日志方面遇到了问题,一些员工感到沮丧,因为我们将资源花在了这样的基础设施上,而不是专注于服务我们的业务和使用log4net或Enterprise Logger等已经存在的东西

你能帮我列出你不应该创建自己的.net记录器的原因吗


另外,欢迎您提出合理观点的原因是:)

如果您的日志记录解决方案有特殊要求,以至于现成的解决方案不起作用,那么定制版本可能是值得的


如果这是争论的话,你也可以考虑下载一个开源框架并尝试定制它。p> 我会采取不同的方法。首先为您自己的库引入一个公共接口,比如公共基础结构库(),怎么样。然后,您可以逐渐将所有项目转移到该接口,如果您自己的库不能胜任大型项目的工作,那么只需切换到一个开源框架(甚至是商业解决方案)


Alex

我使用一个自定义日志API,该API使用一个提供程序模型设计,允许插入一个外部日志框架。我已经开发了Log4Net、EntLib和System.Diagnostics.Trace记录器的提供程序

这基本上是同一个概念

这意味着内部开发对外部日志框架没有明确的依赖性,但是您仍然可以从您喜爱的日志框架的所有功能中获益。实际上,我们通常使用Log4Net,但已经使用EntLib的客户除外。

  • 这需要钱
  • 这件事以前做过很多次
  • 你没有你想象的那么特别。如果你是,那就做点什么吧
  • 也许你没有你想象的那么聪明
  • 你是不是人手过剩?还没有

在我的上一份工作中,几乎所有的基础设施都是由我们编写的,而不是使用一些现成的产品。(我所说的“所有的基础设施”是指所有的基础设施——日志、消息、数据库、容器等等)

它最大的缺点之一是,它使我们将大部分时间花在与最终用户无关的事情上,而不是添加更多功能

从那份工作中,我学会了始终专注于你的产品要解决的问题。你们公司正在开发伐木机吗?记录器的质量是否会比其他功能对客户产生更大的影响?我不这么认为

您的预算和人力有限-明智地使用它。不要重新发明轮子。我相信,如果您将注意力集中在客户需要的东西上,您的公司和客户将受益匪浅


在我当前的项目中,我使用NHibernate作为ORM框架,而不是在其他项目中使用的内部框架。我的重点不是修复旧ORM框架中的bug,而是项目的主要路线图。此外,NHibernate有自己的路线图,这意味着在我的公司没有太多资源的情况下,附加功能也会出现。

我不同意那些认为人们到处都在改造轮子的人。轮子可以是数据库服务器、操作系统或编程语言。然而,像ORM框架或log4net之类的东西在市场上还没有足够的时间来考虑。 这些产品中的许多都有一个短的生命周期,它们被新的方法所取代,只是考虑你看到了多少个ORM框架,然后是微软并启动LINQ。 日志不是一门你可以学习的坚实的学科,它非常依赖于平台。 因此,考虑使用可能过时的日志框架(log4net vs nlog),浪费时间学习它,并不排除构建自己的日志的选项。 我用ORM映射完成了这项工作,对我来说,构建几个ORM类比学习nHybernate更好。

我写我的是因为我认为(a)它基于一个标准的.NET类TraceListener,并且(B)它使用起来小且简单,可能是因为我想写一个

但现在我在我的新项目中使用NLog,并在一些旧项目中替换它


我错了吗?这两种方法对我都很管用,我之所以使用NLog,是因为我想要一个几乎需要重写自定义TraceListener的特性。事实证明,一个1到2小时的教程和一个示例应用程序对我来说更便宜。这不是普遍的情况;但这有助于更清楚地了解日志记录问题。

a big+1!很多公司和开发者都陷入了“非发明于此”综合症。