0

Nodejs のコンソールを Winston でオーバーライドしようとしています。

for (var z in loggerSettings) {
    console[z] = (function () {
        var i = z + ''
          , _backup = console[z];
        return function () {
            var utfs = arguments.length >= 2 ? util.format.apply(util, arguments) : arguments[0]
              , coldex = 0;
            if (true) logger[i == 'log' ? 'info' : i](utfs);
            if (loggerSettings[i].console){
                if ((coldex = utfs.indexOf(']') + 1) <= MAX_TAG_LENGTH) 
                    _backup(utfs.substring(0, coldex)[i]['inverse'] + utfs.substring(coldex));
                else _backup(utfs);
            }
        }
    })();
}

これは、基本的なconsole.log var z、console.info、console.warn メソッドのみです。問題は、無名関数ごとに z が変化していることです。この問題に対処するのは少し難しいですが、z のスコープが変化しているように見え、変数 z はループの反復ごとに正確に一定値に固執していません。Z はその範囲に固執したくありません。

4

1 に答える 1