Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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/8/logging/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# 日志错误或其他此类调试信息应该由API或调用应用程序处理吗?_C#_.net_Logging - Fatal编程技术网

C# 日志错误或其他此类调试信息应该由API或调用应用程序处理吗?

C# 日志错误或其他此类调试信息应该由API或调用应用程序处理吗?,c#,.net,logging,C#,.net,Logging,从设计角度来看,谁应该负责写出文件错误条件或其他此类调试信息 完成了吗 API内部(API负责生成和写入信息以归档) 或 在API中,只向调用方公开信息,并让调用应用程序记录信息并对其执行操作 “两者”怎么样 通常,许多消费者都会使用API。如果API中存在问题,则应以增强API团队进行故障排除的方式记录该问题 同时,如果API将错误条件返回给调用者,那么调用者可能希望记录该事实,以便对调用者的应用程序进行故障排除。@erotavlas-我想说,通常将异常调试信息写入文件应该在最内部的cat

从设计角度来看,谁应该负责写出文件错误条件或其他此类调试信息

完成了吗

  • API内部(API负责生成和写入信息以归档)

  • 在API中,只向调用方公开信息,并让调用应用程序记录信息并对其执行操作

  • “两者”怎么样

    通常,许多消费者都会使用API。如果API中存在问题,则应以增强API团队进行故障排除的方式记录该问题


    同时,如果API将错误条件返回给调用者,那么调用者可能希望记录该事实,以便对调用者的应用程序进行故障排除。

    @erotavlas-我想说,通常将异常调试信息写入文件应该在最内部的catch中完成。在这一点之后,传播的唯一内容应该是操作的状态以及一些描述。所以,-在API内部。而且,最好不要只写文件,还要向支持团队发送电子邮件,以防数据库出现故障或类似情况。API使用者不能处理API的内部异常,写出它们是无用的。不正确的输入不应导致API内部出现异常。@user270576:在最内层的catch中写入是个坏主意。它只捕获到捕获点的堆栈跟踪。只有当您可以对异常采取措施时,才应该捕获异常(并且只捕获最具体的异常)。日志记录是可以在子系统边界上处理的事情,所以这就是应该捕获此类异常的地方。@JohnSaunders,如果您不在最内部的catch中处理异常,为什么要在那里使用“catch”语句呢?话虽如此,我同意你的观点:“只有在你能做点什么的时候,你才应该捕捉异常”和“注意子系统边界上的异常”。@user270576:我不认为你应该在内部区域有catch语句,除非你真的要做些什么。@JohnSaunders,因此,本质上,您是说子系统边界处的catch应该是您最内部的catch,这是您应该记录调试信息的地方,对吗?我相信我在日志记录方面也说过同样的话,唯一的区别是,我没有指定捕获应该放在哪里。