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
Java 在一行中记录多个内容比记录多行有什么好处?_Java_Logging - Fatal编程技术网

Java 在一行中记录多个内容比记录多行有什么好处?

Java 在一行中记录多个内容比记录多行有什么好处?,java,logging,Java,Logging,这样写有什么好处吗 logger.info("[Request]: {}, [Response]: {}", requestObject, responseObject); 而是像这样写: logger.info("[Request]: {}", requestObject); logger.info("[Response]: {}", responseObject); 一个很大的优势是能够搜索发生的事情(例如,使用grep),并且

这样写有什么好处吗

logger.info("[Request]: {}, [Response]: {}", requestObject, responseObject);
而是像这样写:

logger.info("[Request]: {}", requestObject);
logger.info("[Response]: {}", responseObject);

一个很大的优势是能够搜索发生的事情(例如,使用
grep
),并且能够获得结果中的所有相关信息,而不必打开文件,搜索您想要的任何内容(例如,请求的某些属性),然后向下滚动查看相关信息(在本例中-响应细节)。

一大优势是能够搜索发生的事情(例如,使用
grep
)并能够获得结果中的所有相关信息,而不必打开文件,搜索您想要的任何内容(例如,请求的某些属性)然后必须向下滚动查看相关信息(在本例中为响应详细信息)。

假设您在多线程上下文中工作

  • 单行日志记录:轻松查看组中的相关内容
  • 多行日志记录:下一行和上一行可能不相关

假设您在多线程环境中工作

  • 单行日志记录:轻松查看组中的相关内容
  • 多行日志记录:下一行和上一行可能不相关

在多行和两个并行请求的情况下,您不能说哪个[Response]属于哪个[request]。您需要一个类似requestId的附加字段来关联它们(无论如何这非常有用)。

在多行和两个并行请求的情况下,您不能说哪个[Response]属于哪个[Request]。您需要一个类似requestId的附加字段来关联它们(无论如何,这非常有用)。

您将所有内容都放在一行中(这样日志中的混乱程度会降低,如果将其放在同一行中,则更容易找到相关内容),并且对
info()的调用也会减少
。这并不意味着您必须始终将所有内容记录在一行中,但将相关内容分组肯定不是一个坏主意。但这是一个愉快的流程,对吗?如果发生了一些不好的事情,抛出了一个异常,并且流程无法到达终点,那么我将无法记录请求,这是一个坏主意,对吗?通常您会捕获异常在处理异常或重新抛出异常时,记录您需要的任何内容。您将所有内容都放在一行中(这样,日志中的混乱更少,如果将其放在同一行中,则更容易找到相关内容),并且对
info()的调用更少
。这并不意味着您必须始终将所有内容记录在一行中,但将相关内容分组肯定不是一个坏主意。但这是一个愉快的流程,对吗?如果发生了一些不好的事情,抛出了一个异常,并且流程无法到达终点,那么我将无法记录请求,这是一个坏主意,对吗?通常您会捕获异常如果这是唯一的原因,那么你可以告诉
grep
显示一些上下文行,例如
grep-A 1'\[Request\]'my.log
。当然,当应用程序是多线程的时候,你现在必须使用同步来确保相关的行是相邻的。如果这是唯一的原因,那么你可以告诉
grep
显示一些上下文行,例如
grep-A 1'\[Request\]'my.log
。当然,当应用程序是多线程的时候,您现在必须使用同步来确保相关的行最终相邻。