ld31-space-diggers/node_modules/browser-sync/lib/logger.js
Ruben Müller 760c1838ed Add game
2014-12-07 20:57:49 +01:00

195 lines
4.6 KiB
JavaScript

"use strict";
var messages = require("./messages");
var utils = require("./utils");
var _ = require("lodash");
var template = "[{blue:%s}] ";
var logger = require("eazy-logger").Logger({
prefix: template.replace("%s", "BS"),
useLevelPrefixes: false
});
module.exports.logger = logger;
/**
* @param name
* @returns {*}
*/
module.exports.getLogger = function (name) {
return logger.clone(function (config) {
config.prefix = config.prefix + template.replace("%s", name);
return config;
});
};
/**
* Logging Callbacks
*/
module.exports.callbacks = {
/**
* Log when file-watching has started
* @param options
* @param data
*/
"file:watching": function (options, data) {
if (Object.keys(data).length) {
logger.info("Watching files...");
}
},
/**
* Log when a file changes
* @param options
* @param data
*/
"file:reload": function (options, data) {
if (data.log) {
var path = utils.resolveRelativeFilePath(data.path, data.cwd);
logger.info("{cyan:File changed: {magenta:%s", path);
}
},
/**
*
*/
"service:exit": function () {
logger.debug("Exiting...");
},
/**
*
*/
"browser:reload": function () {
logger.info("{cyan:Reloading Browsers...");
},
/**
* @param options
* @param data
*/
"config:error": function (options, data) {
logger.setOnce("useLevelPrefixes", true).error(data.msg);
},
/**
* @param options
* @param data
*/
"config:warn": function (options, data) {
logger.setOnce("useLevelPrefixes", true).warn(data.msg);
},
/**
* @param options
* @param data
*/
"stream:changed": function (options, data) {
var changed = data.changed;
logger.info("{cyan:%s %s changed} ({magenta:%s})",
changed.length,
changed.length > 1 ? "files" : "file",
changed.join(", ")
);
},
/**
* Client connected logging
* @param options
* @param data
*/
"client:connected": function (options, data) {
var uaString = utils.getUaString(data.ua);
var msg = "{cyan:Browser Connected: {magenta:%s, version: %s}";
var method = "info";
if (!options.logConnections) {
method = "debug";
}
logger.log(method, msg,
uaString.name,
uaString.version
);
},
/**
* Main logging when the service is running
* @param options
* @param data
*/
"service:running": function (options, data) {
var type = data.type;
var baseDir = options.server.baseDir;
var proxy = options.proxy;
if (type === "server") {
logUrls(options.urls);
if (baseDir) {
if (Array.isArray(baseDir)) {
_.each(baseDir, serveFiles);
} else {
serveFiles(baseDir);
}
}
}
if (type === "proxy") {
logger.info("Proxying: {cyan:%s}", proxy.target);
logger.info("Now you can access your site through the following addresses:");
logUrls(options.urls);
}
if (type === "snippet" && options.logSnippet) {
logger.info(
"Copy the following snippet into your website, " +
"just before the closing {cyan:</body>} tag"
);
logger.unprefixed("info",
messages.scriptTags(options.port, options)
);
}
function serveFiles (base) {
logger.info("Serving files from: {magenta:%s}", base);
}
function logUrls (urls) {
_.each(urls, function (value, key) {
logger.info("%s URL: {magenta:%s}",
utils.ucfirst(key),
value);
});
}
}
};
/**
* Plugin interface - only to be called once to register all events
*/
module.exports.plugin = function (emitter, options) {
// Should set logger level here!
if (options.logLevel === "silent") {
logger.mute(true);
} else {
logger.setLevel(options.logLevel);
}
if (options.logPrefix) {
if (_.isFunction(options.logPrefix)) {
logger.setPrefix(options.logPrefix);
} else {
logger.setPrefix(template.replace("%s", options.logPrefix));
}
}
_.each(exports.callbacks, function (func, event) {
emitter.on(event, func.bind(this, options));
});
return logger;
};