xmppo / node-xmpp-bosh

An XMPP BOSH & WebSocket server (connection manager) written on node.js using Javascript
https://github.com/xmppo/node-xmpp-bosh
263 stars 85 forks source link

TypeError: Object #<Object> has no method 'consoleAppender' #46

Closed vinnitu closed 11 years ago

vinnitu commented 11 years ago

node_modules/node-xmpp-bosh/src/log.js:7 var appender = log4js.consoleAppender(log4js.basicLayout); ^ TypeError: Object # has no method 'consoleAppender' at Object. (/home/user/project/node_modules/node-xmpp-bosh/src/log.js:7:23) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:362:17) at require (module.js:378:17) at Object. (/home/user/project/node_modules/node-xmpp-bosh/src/dutil.js:534:30) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10)

kaosdynamics commented 11 years ago

+1 I also had this problem... I "temporarely" fixed by writing this into /home/user/project/node_modules/node-xmpp-bosh/src/log.js

var log4js = require("/home/user/project/node_modules/node-xmpp-bosh/node_modules/log4js"),
    layouts = require('/home/user/project/node_modules/node-xmpp-bosh/node_modules/log4js/lib/layouts'),
    consoleLog = console.log;

log4js.configure({
    doNotReplaceConsole: true
});
function consoleAppender (layout) {
    layout = layout || layouts.colouredLayout;
    return function(loggingEvent) {
        consoleLog(layout(loggingEvent));
    };
}

var appender = consoleAppender(log4js.basicLayout);
log4js.clearAppenders();
log4js.addAppender(appender);
log4js.setGlobalLogLevel("INFO");

var set_log_level = function (level) {
        log4js.setGlobalLogLevel(level);
};

module.exports = log4js;
module.exports.set_log_level = set_log_level;

This code SHOULD be work for you :) (I don't know if I correctly edit the require paths for example...)

vinnitu commented 11 years ago

my solution is

//var appender = log4js.consoleAppender(log4js.basicLayout); //log4js.clearAppenders(); //log4js.addAppender(appender);

dhruvbird commented 11 years ago

Yes, this is related to issue #33 - You can follow the steps mentioned there to fix it. Basically, log4js made a backward incompatible API change I believe and we had deps set up as >= instead of =. The next version (or the one after that) will have node-lumberjack as the logger (mostly), so these problems shouldn't arise.

dhruvbird commented 11 years ago

node-lumberjack used for logging now, so this should be irrelevant now.