C# .Net记录器(编写自己的vs log4net/enterprise Logger/nlog等)
我在一个IT部门工作,大约有50多名开发人员。过去大约有100多名开发商,但由于经济衰退而被削减 当我们的部门更大的时候,有一个雄心勃勃的努力建立了一个特殊的建筑小组 这个小组决定做的一件事是创建我们自己的内部记录器。他们认为这是一项如此简单的任务,我们可以花费资源自己完成。现在,我们在性能和查看生成的日志方面遇到了问题,一些员工感到沮丧,因为我们将资源花在了这样的基础设施上,而不是专注于服务我们的业务和使用log4net或Enterprise Logger等已经存在的东西 你能帮我列出你不应该创建自己的.net记录器的原因吗C# .Net记录器(编写自己的vs log4net/enterprise Logger/nlog等),c#,.net,logging,C#,.net,Logging,我在一个IT部门工作,大约有50多名开发人员。过去大约有100多名开发商,但由于经济衰退而被削减 当我们的部门更大的时候,有一个雄心勃勃的努力建立了一个特殊的建筑小组 这个小组决定做的一件事是创建我们自己的内部记录器。他们认为这是一项如此简单的任务,我们可以花费资源自己完成。现在,我们在性能和查看生成的日志方面遇到了问题,一些员工感到沮丧,因为我们将资源花在了这样的基础设施上,而不是专注于服务我们的业务和使用log4net或Enterprise Logger等已经存在的东西 你能帮我列出你不应该
另外,欢迎您提出合理观点的原因是:)如果您的日志记录解决方案有特殊要求,以至于现成的解决方案不起作用,那么定制版本可能是值得的
如果这是争论的话,你也可以考虑下载一个开源框架并尝试定制它。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!很多公司和开发者都陷入了“非发明于此”综合症。