我已经为log4javascript的自定义日志“ appender”进行了首次尝试。它可以工作,但是卡在原始代码中。我想将扩展名保存在一个单独的文件中,但是我对其余代码的了解不够深,无法知道如何提取它。

我了解到log4javascript某种程度上尊重UMD模式,但据我所知。

(虽然不应该...


  (function(root,factory){})(this,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);


如何将Appender放在单独的文件中?

最佳答案

自几个小时前发布以来,我一直在阅读有关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();

07-24 18:51