在我的应用程序中,我们有一个跟踪记录器.我们在跟踪方法名称和参数值的大多数重要方法的开头和结尾添加了日志语句.现在这些跟踪语句使代码膨胀,阅读它们有点痛苦.
我正在考虑如何将代码的这一方面与业务逻辑分开.
今天我读到了Unity的拦截框架.如果可以使用通用记录器拦截我的方法调用并记录方法名称和参数值,我有一个想法.我不确定是否可以使用反射读取方法参数.Unity可以像这样使用吗?
另一个想法是运行T4代码生成引擎,在用特定属性修饰的所有方法的开头和结尾生成日志记录语句.由于我对T4知之甚少,有谁知道这是否可以实现?
有没有其他方法可以将日志记录代码与业务逻辑分开?
干杯,Unmesh
在我的app.config中,我想设置3个跟踪级别(交换机?):详细,警告和无.在代码的调试版本中,我想要在我想要警告的版本中激活详细开关.在特殊情况下,我的应用程序用户可以修改配置文件以禁用所有跟踪.
我希望在控制台上输出调试跟踪,而发布只跟踪到日志文件.
我写了以下内容:
[...]
<system.diagnostics>
<sources>
<!-- This section defines the logging configuration for My.Application.Log -->
<source name="debug" switchName="debug">
<listeners>
<add name="FileLog"/>
<add name="console"/>
</listeners>
</source>
<source name="release" switchName="release">
<listeners>
<add name="FileLog"/>
</listeners>
</source>
<source name="silent" switchName="none">
<listeners/>
</source>
</sources>
<switches>
<add name="debug" value="Verbose"/>
<add name="release" value="Warning"/>
<add name="none" value="Off"/>
</switches>
<!--<sharedListeners>
<add name="FileLog" type="System.Diagnostics.TextWriterTraceListener" traceOutputOptions="DateTime" initializeData="felix.log"/>
<add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false" />
</sharedListeners>-->
<trace autoflush="false" indentsize="4">
<listeners>
<add name="FileLog" type="System.Diagnostics.TextWriterTraceListener" traceOutputOptions="DateTime" initializeData="felix.log"/>
<add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false"/>
<remove name="Default"/>
</listeners>
</trace> …Run Code Online (Sandbox Code Playgroud) 由于我目前正在设置Logging in my(Asp.Net Web Api)应用程序,因此我正在阅读根据日志记录的最佳实践.我提出了关于记录最佳实践的问题.
我走的是Ninject- > Logging Extensions- > Nlog / Log4Net方式,但这个问题(或者我应该说答案)让我第二次思考.
在我启用跟踪的那一刻,记录每一个地方,并且让日志和跟踪不加起来感觉有点混乱.
我认为当我切换到诊断跟踪并在框架已经给我的基础上构建时,我最终会得到更完整的跟踪.讲述一个完整故事的痕迹对我来说听起来更有用,然后是一个单独的跟踪和日志,它们都知道故事的一部分.当然,我总是可以通过听众和过滤器再次分开.
但另一方面,我总是学到:
记录!=追踪
所以这给我留下了一个问题,如果我放弃了日志框架,它是项目的起始阶段,还是我应该坚持下去?
如果我删除日志框架,我是否应该使用接口以防我们再次想要切换到另一个日志/跟踪框架,或者我可以只依赖System.Diagnostics?
我正在开发一个新的ASP.NET应用程序,我有兴趣使用推荐的日志记录方法.我对社区的问题是,您希望在ASP.NET项目中使用哪种日志框架?有哪些优点/缺点?有这么多,他们似乎一直在变化,我只是不确定哪条路要走下去.
谢谢
在发布此问题之前,我尝试进行多次搜索.如果这是重复,请告诉我,我将删除它.
我的问题围绕处理通过我们的Web应用程序产生的错误的正确方法.我们目前通过log4j记录所有内容.如果发生错误,它只是说"发生了错误.已经通知IT部门,并将在屏幕上尽快纠正此错误".这告诉用户没什么......但是当我们尝试重现错误时,它也没有告诉开发人员任何事情.我们必须转到错误日志文件夹并尝试查找此错误.我还要提一下,该文件夹中充满了过去一周的日志.每次出现错误时,都会为该用户创建一个日志文件,并将电子邮件发送给分配给处理错误的IT人员.此电子邮件未提及日志文件名,但它是日志文件中写入的相同错误文本的副本.
因此,如果Alicia在7:15遇到问题,但在同一分钟发生了10个其他错误,我必须通过每个日志文件试图找到她的.
我向同事们提出的建议是在数据库中添加一个错误日志表.这会为每个错误写一条记录,记录它的用户,错误,它发生的页面等等.这样做的好处是我们可以从表中返回主键值(error_log_id)和显示在页面上有一条消息,例如"错误参考ID(1337)已被记录,并且已通知正确的IT人员.请保留此参考ID,以备将来使用".当我们收到电子邮件时,它会告诉我们错误的ID以便快速参考.或者如果用户是持久的,他们可以使用id与我们联系,我们可以很快找到错误.
你如何设置错误记录?顺便说一句,我们的系统使用连接到SQL Server数据库的Java Servlet.
我正在企业项目中工作,并尝试使用nLog实现良好的日志记录,我想知道是否有一本书谈论日志记录的最佳实践,
因为我不想开始记录没有标准模式的所有内容,所以如果我可以从其他人停止的地方开始,那将非常有帮助,
也许有人可以使用nLog向我提供最佳实践的信息。...
提前致谢...