intra-mart Accel Platform / Script研制模式编程指南

«  数据库   ::   Contents   ::   UI(设计准则)  »

日志

概要

出于内部控制、安全性确保以及维护等目的,需要进行日志输出。
本项介绍采用 スクリプト開発モデル 时日志输出的实现方法。

Logger API 的使用

日志级别

Logger API提供了5个日志级别。

trace(最轻微)
debug
info
warn
error(最严重)

取得Logger对象

function add(value1, value2) {
    // 取得Logger对象
    // 未指定Logger名,以文件名作为Logger名。
    // 文件配置位置 : <CONTEXT_PATH>/WEB-INF/jssp/src/foo/bar/logger_sample.js
    // Logger名 : 'foo.bar.logger_sample'
    var logger = Logger.getLogger();
}
使用Logger.getLogger方法(),取得Logger对象。以传给参数的字符串作为Logger名。
没有向参数传递任何值时,根据调用该方法的JS文件的源代码路径进行创建。具体来说,就是把 JS 文件的源代码路径的文件名分隔符替换为“.”,并将该字符串作为Logger名。JS 文件的源代码路径是指源代码检索目录的相对路径(不含扩展名)。

输出日志

function add(value1, value2) {
    // 取得Logger对象
    // 未指定Logger名,将文件名作为Logger名使用。
    // 文件配置位置 : <CONTEXT_PATH>/WEB-INF/jssp/src/foo/bar/logger_sample.js
    // Logger名 : 'foo.bar.logger_sample'
    var logger = Logger.getLogger();

    logger.debug('arguments=[{}, {}]', value1, value2);
    var result = value1 + value2;
    logger.trace('result={}', result);

    return result;
}
使用 Logger 对象输出日志。
在上述函数中,传给参数的值为debug级别,计算结果使用trace级别进行输出。
日志级别为debug,执行add(1, 2)时,输出以下内容。
[DEBUG] f.b.logger_sample - arguments=[1, 2]
日志级别为trace,执行add(1, 2)时,输出以下内容。
[DEBUG] f.b.logger_sample - arguments=[1, 2]
[TRACE] f.b.logger_sample - result=3

使用 LoggerMDC API

MDC

通过使用 Mapped Diagnostic Context(映射化诊断上下文),可以在日志中输出用日志配置文件的布局设置中独自定义的key保存的信息。
使用 LoggerMDC API,可以将消息写入独自定义的key中。

使用 MDC 进行日志输出

// 定义 MDC 的主键
var MDC_FUNC_KEY = 'application.func';
function add(value1, value2) {
    // 取得Logger对象
    // 未指定Logger名,将文件名作为Logger名使用。
    // 文件配置位置 : <CONTEXT_PATH>/WEB-INF/jssp/src/foo/bar/logger_sample.js
    // Logger名 : 'foo.bar.logger_sample'
    var logger = Logger.getLogger();

    // 在 MDC 中设置值
    LoggerMDC.put(MDC_FUNC_KEY, 'add');

    logger.debug('arguments=[{}, {}]', value1, value2);
    var result = value1 + value2;
    logger.trace('result={}', result);

    // 对 MDC 的值进行初始化
    LoggerMDC.remove(MDC_FUNC_KEY);

    return result;
}
在 MDC 中设置了正在执行的函数名。
利用 LoggerMDC.put(key, value)方法,在 MDC 的 “application.func” 主键中设置了正在执行的函数名 “add” 。
如果不特意对MDC中保存的内容进行初始化,则值不被初始化。
因此,在执行完目标日志输出处理后,通过 LoggerMDC.remove(key) 方法对 MDC 的 “application.func” 主键值进行初始化。
输出示例
对 <CONTEXT_PATH>/WEB-INF/conf/log/im_logger.xml 的 <configuration>/<appender name=”STDOUT”>/<encoder>/<pattern> 内容进行如下修改后,重新启动应用程序服务器。
[%level] %logger{10} - %X{application.func} %msg%n
通过日志级别 trace 执行 add(1, 2) 时输出的日志
[DEBUG] f.b.logger_sample - add arguments=[1, 2]
[TRACE] f.b.logger_sample - add result=3

«  数据库   ::   Contents   ::   UI(设计准则)  »