当代码非常递归时,如何在java中记录事件(例如多子树)
我被要求以有效的方式将日志写入与解析CSV文件相关的产品。现在,这段代码非常庞大并且非常递归。我发现,如果我尝试直接登录(如在递归循环中记录状态),会造成很多混乱,因此在出现故障或故障时,很难在以后分析日志文件。关于如何在这里以有效的方式编写日志的任何帮助都将非常有用当代码非常递归时,如何在java中记录事件(例如多子树),java,Java,我被要求以有效的方式将日志写入与解析CSV文件相关的产品。现在,这段代码非常庞大并且非常递归。我发现,如果我尝试直接登录(如在递归循环中记录状态),会造成很多混乱,因此在出现故障或故障时,很难在以后分析日志文件。关于如何在这里以有效的方式编写日志的任何帮助都将非常有用 代码更多的是关于解析器和在每个阶段构建几棵树。现在,这些树是以递归方式构建的,在这里(在这样的递归循环中)写入日志将以一种很难理解和分析的方式进行日志记录。因此,是否可以以更好地理解它的方式进行操作(也许日志中代码的可视化表示会有
代码更多的是关于解析器和在每个阶段构建几棵树。现在,这些树是以递归方式构建的,在这里(在这样的递归循环中)写入日志将以一种很难理解和分析的方式进行日志记录。因此,是否可以以更好地理解它的方式进行操作(也许日志中代码的可视化表示会有所帮助)首先,您应该知道日志记录的结果是什么。不管您是否编写了递归代码,如果您记录了一些内容,那么您将在日志中记录这些内容 所以,如果你真的要在周期内记录事件,那么我猜,你可能想要分割重要的事件,而不是 例如(使用slf4j和logback): 以正常方式记录事件
LOGGER.trace("log message");
使用info level和upper记录重要内容,使用trace记录所有其他内容,然后添加两个具有不同日志级别的附加器。
logback.xml:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>@project.artifactId@.log</file>
<append>true</append>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder>
<charset>UTF-8</charset>
<pattern>%-8level %-25d{YYYY-MM-dd HH:mm:ss.SSS} %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE_TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>@project.artifactId@_trace.log</file>
<append>true</append>
<encoder>
<charset>UTF-8</charset>
<pattern>%-8level %-25d{YYYY-MM-dd HH:mm:ss.SSS} %logger - %msg%n</pattern>
</encoder>
</appender>
<root level="ERROR">
<appender-ref ref="FILE" />
<appender-ref ref="FILE_TRACE" />
</root>
@项目。artifactId@.log
符合事实的
信息
UTF-8
%-8level%-25d{YYYY-MM-dd HH:MM:ss.SSS}%logger-%msg%n
@项目。artifactId@_trace.log
符合事实的
UTF-8
%-8level%-25d{YYYY-MM-dd HH:MM:ss.SSS}%logger-%msg%n
在这种情况下,一个日志文件将包含所有内容,而第二个日志文件仅包含重要数据(错误、警告和信息)
因此,使用具有信息级别的文件可以更容易地监控重要的内容,并且您可以使用跟踪级别完整地登录文件。什么是“极度递归”的意思?除了“如果我尝试直接记录”之外,还有什么选择?我想没有人能帮你解决这个问题。让我们看看你到目前为止都做了些什么?同时检查一下这个@miiii这是一个巨大的代码库。。所以我不知道如何向你展示代码至少展示你想放日志的那部分的sudo代码。@f1sh非常递归的代码意思,例如,构造一个巨大的多子树