首页 > 解决方案 > 有条件地记录信息的最有效方法是什么?

问题描述

我真的不知道从应用程序记录信息的最佳方式是什么。我见过的大部分内容都是这样编程的:

while(true) {
   //code
   if(debug == true) {
      log(info);
   }
end

而且我考虑过使用两个单独的循环,如下所示:

if(debug == true) {
   while(true) {
      //code
      log(info);
   }
else {
   while(true) {
      //code
   }
}

但这有一个问题,即以后要更改的工作量要翻倍。最后一个我认为可能是最好的解决方案是使用 lambda 表达式之类的东西并传递一个空实现以在不调试的情况下使用:

public void loop(Debug debug) {
   while(true) {
      //code
      debug.log(info)
   }
}

public static void main(String[] args) {
   loop(d -> {
      //print to file, command line, etc. OR do nothing
   });
}

对问题或意外后果的任何澄清将不胜感激。提前致谢!

标签: javaperformancecoding-efficiency

解决方案


不要试图发明自行车。使用现有的日志框架并遵循他们的指导方针。

无论你怎么想——你都需要克服那里已经解决的相同问题。

例如https://logging.apache.org/log4j/2.xhttp://www.slf4j.org/


推荐阅读