我第一次尝试为log4javascript自定义日志"appender"。它可以工作,但它卡在原始代码中。 我想将我的扩展保存在一个单独的文件中,但我对其余代码的理解不够好,不知道如何提取它。
我知道log4javascript以某种方式尊重UMD模式,但这就是我所得到的。
(虽然不应该是...
(function(root, factory){})(this, function{})...
。而不是。。。
(function(factory, root){})(function{})
????*)
(function(factory, root) {
if (typeof define == "function" && define.amd) {
define(factory);
}
else if (typeof module != "undefined" && typeof exports == "object") {
module.exports = factory();
}
else {
root.log4javascript = factory();
}
})(function() {
:
Here be dragons . . .
:
/* -- - this code works from here, but not if I - -- */
/* -- - try to move it out to a file of its own - -- */
function MyAppender() {}
MyAppender.prototype = new Appender();
MyAppender.prototype.layout = new SimpleLayout();
MyAppender.prototype.append = function(loggingEvent) {
alert( this.getLayout().formatWithException(loggingEvent) );
};
MyAppender.prototype.toString = function() {
return "MyAppender";
};
log4javascript.MyAppender = MyAppender;
/* -- - - - - - - - - - - - -- */
:
. . . and sea monsters
:
return log4javascript;
}, this);
如何在单独的文件中对追加器进行子类化?
自从几个小时前发布以来,我一直在阅读更多关于UMD,AMD,requireJS等的信息。
主要问题是名称空间的纯度,似乎。
想通了这一点,我所要做的就是解决命名空间问题。 事实证明,这非常简单:它就在代码中!咄!:
log4javascript.MyAppender = MyAppender;
而不是。。。
MyAppender.prototype = new Appender();
MyAppender.prototype.layout = new SimpleLayout();
。 我只需要做...
MyAppender.prototype = new log4javascript.Appender();
MyAppender.prototype.layout = new log4javascript.SimpleLayout();