Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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 - Fatal编程技术网

当代码非常递归时,如何在java中记录事件(例如多子树)

当代码非常递归时,如何在java中记录事件(例如多子树),java,Java,我被要求以有效的方式将日志写入与解析CSV文件相关的产品。现在,这段代码非常庞大并且非常递归。我发现,如果我尝试直接登录(如在递归循环中记录状态),会造成很多混乱,因此在出现故障或故障时,很难在以后分析日志文件。关于如何在这里以有效的方式编写日志的任何帮助都将非常有用 代码更多的是关于解析器和在每个阶段构建几棵树。现在,这些树是以递归方式构建的,在这里(在这样的递归循环中)写入日志将以一种很难理解和分析的方式进行日志记录。因此,是否可以以更好地理解它的方式进行操作(也许日志中代码的可视化表示会有

我被要求以有效的方式将日志写入与解析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非常递归的代码意思,例如,构造一个巨大的多子树