如果您查看 log4javascript.js 内部,您会看到 PopUpAppender 被配置为在每次显示时清除其记录的事件列表(未压缩版本中的第 4839 行):
while (queuedLoggingEvents.length > 0) {
queuedLoggingEvents.shift().append();
}
如果您希望即使在弹出窗口关闭然后重新打开后仍保留日志条目,则快速解决方法是将上述代码段更改为:
for ( var i = 0; i < queuedLoggingEvents.length; i++ )
queuedLoggingEvents[i].append();
理想情况下,开发人员应将此作为选项添加到 PopUpAppender 类中,您可以通过添加以下行来实现:
第 5254 行,在 PopUpAppender 定义中:
var clearMessagesAfterOpening = this.defaults.clearMessagesAfterOpening;
第 5284 行,在 PopUpAppender 定义中:
this.isClearMessagesAfterOpening = function()
{
return clearMessagesAfterOpening;
};
this.setClearMessagesAfterOpening = function( clearMessagesAfterOpeningParam )
{
// This property can be safely altered after logging has started
clearMessagesAfterOpening = bool( clearMessagesAfterOpeningParam );
};
第 5459 行,在 PopUpAppender.prototype.defaults 定义中:
clearMessagesAfterOpening : false,
最后,更改第 4839 行的初始代码以考虑新添加的选项:
for ( var i = 0; i < queuedLoggingEvents.length; i++ )
queuedLoggingEvents[i].append();
if ( clearMessagesAfterOpening )
queuedLoggingEvents.clear();
您现在可以通过使用 PopUpAppender 的“clearMessagesAfterOpening”选项来控制此行为,在上面的代码中默认为 false。希望这可以帮助!:)