Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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
log4javascript-日志消息中的行号_Javascript_Logging_Log4javascript - Fatal编程技术网

log4javascript-日志消息中的行号

log4javascript-日志消息中的行号,javascript,logging,log4javascript,Javascript,Logging,Log4javascript,log4javascript打印log4javascript js文件的行号 日志消息。。。。log4javascript_uncompressed.js:1881 如何打印在日志消息中放置实际日志的行号? 例子: 日志消息。。。。app.js:15AFAIK,log4javascript中的PatternLayout没有实现文件名/行号的说明符。已有多个用户对此提出了功能请求 下面是一个示例,说明了您可以如何自己实现它: 正如Tim指出的,上面的链接有log4js的代码 编辑:因此,从中得到一

log4javascript打印log4javascript js文件的行号

日志消息。。。。log4javascript_uncompressed.js:1881

如何打印在日志消息中放置实际日志的行号? 例子:
日志消息。。。。app.js:15

AFAIK,log4javascript中的PatternLayout没有实现文件名/行号的说明符。已有多个用户对此提出了功能请求

下面是一个示例,说明了您可以如何自己实现它:

正如Tim指出的,上面的链接有log4js的代码

编辑:因此,从中得到一个提示,下面是使用log4javascript的代码:

注意:这只适用于Firefox

/**
 Throw a fake exception to retrieve the stack trace and analyze it
 to find the line number from which this function was called
*/
var getLineNumber = function(layout, loggingReference) {
    try {(0)()} catch (e) {
        /* Split the stack trace */
        output = e.stack.replace(/^.*?\n/,'').replace(/(?:\n@:0)?\s+$/m,'').replace(/^\(/gm,'{anon}(').split("\n");
        /* The last trace in the array is the filename/line number of the line that logged this */
        log_location = output.pop().split(':');
        /* Extract the line number from this trace */
        line = log_location[log_location.length - 2]
        return line; 
    }
}

logger = log4javascript.getLogger("main");

/* Configure the logger object: add a pop-up appender */
var logAppender = new log4javascript.PopUpAppender();

/* Set a PatternAppender with a custom field */
var popUpLayout = new log4javascript.PatternLayout("[Line#%f] %m");
/* Use the method getLineNumber() as the value for the 0th custom field */
popUpLayout.setCustomField('line', getLineNumber);

logAppender.setLayout(popUpLayout);
logger.addAppender(logAppender);

/* A test log */
logger.info("This is a test")
上述脚本生成以下输出:

这是一个测试


您能提供一些代码来显示您正在尝试做什么吗?这些代码是针对log4js而不是log4javascript的。他们很相似但不一样。我花了一段时间才意识到@TimDown是log4javascript的作者!我可以想象,人们把
log4js
log4javascript
混淆的次数会让你感到沮丧!我对答案进行了编辑,添加了一个使用
log4javascript
的示例(注意,正如您在回答中正确提到的那样,它只适用于Firefox)