21-结果分析
结果分析
本节使用Java日志API提供的 Logger 类输出并发程序的应用日志,并通过实现 MyFormatter 指定日志输出的格式。在 MyFormatter 类中,程序实现了 Formatter 上的 format() 方法,该方法接收一个包含所有日志信息的 LogRecord 类型的对象作为参数,并且输出指定格式的日志文本。本案例中,我们可以在 LogRecord 对象上用下述方法获得日志记录的详细信息。
getLevel():获得日志记录的等级。getMillis():获得日志记录发送到Logger对象上的具体时间。getSourceClassName():获得日志记录来源类的类名。getSourceMessageName:获得日志记录来源方法的方法名。getMessage():获得日志内容。
MyLogger 类实现了静态方法 getLogger() 。该方法创建了一个 Logger 类型的对象,并且关联一个输出日志到 recipe6.log 的处理器对象,输出日志的格式由 MyFormatter 对象指定。另外,传入不同的名称到 Logger 类的 getLogger() 将会得到不同的对象,然而这个过程中只创建了一次 Handler 对象,因此日志将会输出到相同的日志文件中,另外,由于之前已经设置了输出日志等级为“输出全部类型的日志”,因此所有类型的日志都会输出到日志文件中。
本案例实现了一个 Task 类对象和输出日志到日志文件的主类对象,使用了以下方法。
entering():输出FINER等级的日志,这表示某个方法已经开始执行。exiting():输出FINER等级的日志,这表示某个方法已经结束执行。log():输出指定等级的日志信息。