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
Logging 为什么在Logback/SLF4J中使用MDC.remove()?_Logging_Slf4j_Logback_Mdc - Fatal编程技术网

Logging 为什么在Logback/SLF4J中使用MDC.remove()?

Logging 为什么在Logback/SLF4J中使用MDC.remove()?,logging,slf4j,logback,mdc,Logging,Slf4j,Logback,Mdc,我知道客户机服务器中使用了MDC,记录日志是为了找出哪个日志用于哪个客户机。() 但是为什么我们使用MDC.remove() 这是内存效率问题吗?另一个原因是该值已过期。例如,如果您在MDC中有一个用户名,但该用户已注销,则您的信息已过时。如果您仍然记录此操作,则可能会完全误导调试。通常,put()操作应与相应的remove()操作相平衡。否则,MDC将包含某些键的过时值。我们建议尽可能在finally块中执行remove()操作,确保它们的调用与代码的执行路径无关。这是一个很好的预测,但据我所

我知道客户机服务器中使用了MDC,记录日志是为了找出哪个日志用于哪个客户机。()

但是为什么我们使用
MDC.remove()


这是内存效率问题吗?

另一个原因是该值已过期。例如,如果您在MDC中有一个用户名,但该用户已注销,则您的信息已过时。如果您仍然记录此操作,则可能会完全误导调试。

通常,put()操作应与相应的remove()操作相平衡。否则,MDC将包含某些键的过时值。我们建议尽可能在finally块中执行remove()操作,确保它们的调用与代码的执行路径无关。

这是一个很好的预测,但据我所知,MDC用于清除哪个客户端生成了whcih log语句,但是如果一个客户端已经注销,那么就不会再进行日志记录,我们也不会收到任何误导性的日志消息@USER3593084:考虑客户端可以在没有登录的情况下看到主页和应用程序日志的情况。在后一种情况下(未登录),日志消息不应包含用户名。我不理解客户机在未登录的情况下看到页面,因此它无法执行任何操作,因此不会发生日志记录@user3593084:我不完全理解您不理解的内容:)无论如何,这个示例可能有点混乱,因为“登录”(使用用户/通行证进行身份验证)和“日志”(将消息写入文件)是不同的事情。