Skip to content

Commit

Permalink
[FEATURE] Add new log level "perf"
Browse files Browse the repository at this point in the history
* New "perf" log
* Upgrade npmlog dependency from 5.0.1 to 6.0.2
* Change log colors from purple to blue
  • Loading branch information
RandomByte committed Jul 28, 2022
1 parent f8071b0 commit acf0c71
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 56 deletions.
13 changes: 11 additions & 2 deletions lib/logger.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const npmlog = require("npmlog");

const levels = ["silly", "verbose", "info", "warn", "error", "silent"];
const levels = ["silly", "verbose", "perf", "info", "warn", "error", "silent"];
if (process.env.UI5_LOG_LVL) {
const logLvl = process.env.UI5_LOG_LVL;
if (!levels.includes(logLvl)) {
Expand All @@ -12,7 +12,12 @@ if (process.env.UI5_LOG_LVL) {
npmlog.level = "info"; // Our default
}

npmlog.enableUnicode();
npmlog.enableUnicode(); // TODO: Check whether unicode is actually supported
npmlog.prefixStyle = {fg: "blue"};
npmlog.headingStyle = {fg: "white", bg: "black"};

// Verbose is at level 1000, info at 2000
npmlog.addLevel("perf", 1500, {fg: "white", bg: "red"}, "PERF");

npmlog.on("error", (err) => {
console.log(err);
Expand Down Expand Up @@ -52,6 +57,10 @@ class Logger {
return this._logger.verbose(this._moduleName, ...messages);
}

perf(...messages) {
return this._logger.perf(this._moduleName, ...messages);
}

info(...messages) {
return this._logger.info(this._moduleName, ...messages);
}
Expand Down
84 changes: 36 additions & 48 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@
"url": "git@github.com:SAP/ui5-logger.git"
},
"dependencies": {
"npmlog": "^5.0.1"
"npmlog": "^6.0.2"
},
"devDependencies": {
"ava": "^3.15.0",
Expand Down
16 changes: 11 additions & 5 deletions test/lib/logger.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ function getNpmLogStub() {
finish: sinon.stub(),
silly: sinon.stub(),
verbose: sinon.stub(),
perf: sinon.stub(),
info: sinon.stub(),
warn: sinon.stub(),
error: sinon.stub()
Expand All @@ -25,8 +26,10 @@ test.beforeEach((t) => {
on: sinon.stub(),
newGroup: sinon.stub().callsFake(() => getNpmLogStub()),
newItem: sinon.stub().callsFake(() => getNpmLogStub()),
addLevel: sinon.stub(),
silly: sinon.stub(),
verbose: sinon.stub(),
perf: sinon.stub(),
info: sinon.stub(),
warn: sinon.stub(),
error: sinon.stub()
Expand Down Expand Up @@ -75,6 +78,7 @@ test.serial("isLevelEnabled", (t) => {
logger.setLevel("silly");
t.true(logger.isLevelEnabled("silly"));
t.true(logger.isLevelEnabled("verbose"));
t.true(logger.isLevelEnabled("perf"));
t.true(logger.isLevelEnabled("info"));
t.true(logger.isLevelEnabled("warn"));
t.true(logger.isLevelEnabled("error"));
Expand All @@ -84,6 +88,7 @@ test.serial("isLevelEnabled", (t) => {
logger.setLevel("silent");
t.false(logger.isLevelEnabled("silly"));
t.false(logger.isLevelEnabled("verbose"));
t.false(logger.isLevelEnabled("perf"));
t.false(logger.isLevelEnabled("info"));
t.false(logger.isLevelEnabled("warn"));
t.false(logger.isLevelEnabled("error"));
Expand All @@ -93,6 +98,7 @@ test.serial("isLevelEnabled", (t) => {
logger.setLevel("info");
t.false(logger.isLevelEnabled("silly"));
t.false(logger.isLevelEnabled("verbose"));
t.false(logger.isLevelEnabled("perf"));
t.true(logger.isLevelEnabled("info"));
t.true(logger.isLevelEnabled("warn"));
t.true(logger.isLevelEnabled("error"));
Expand Down Expand Up @@ -131,7 +137,7 @@ test.serial("npmlog.level default", (t) => {
});

test.serial("Environment variable UI5_LOG_LVL", (t) => {
["silly", "verbose", "info", "warn", "error", "silent"].forEach((level) => {
["silly", "verbose", "perf", "info", "warn", "error", "silent"].forEach((level) => {
process.env.UI5_LOG_LVL = level;
t.context.logger = mock.reRequire("../../lib/logger");
t.is(t.context.npmLogStub.level, level, `Level should be set to ${level}`);
Expand All @@ -144,7 +150,7 @@ test.serial("Environment variable UI5_LOG_LVL (invalid)", (t) => {
mock.reRequire("../../lib/logger");
}, {
message: `UI5 Logger: Environment variable UI5_LOG_LVL is set to an unknown log level "all". ` +
`Valid levels are silly, verbose, info, warn, error, silent`
`Valid levels are silly, verbose, perf, info, warn, error, silent`
});
});

Expand All @@ -162,7 +168,7 @@ test.serial("Logger", (t) => {
const _logger = myLogger._getLogger();
t.is(_logger, npmLogStub, "_getLogger should return npmlog");

["silly", "verbose", "info", "warn", "error"].forEach((level) => {
["silly", "verbose", "perf", "info", "warn", "error"].forEach((level) => {
myLogger[level]("Message 1", "Message 2", "Message 3");
t.true(_logger[level].calledOnce, `npmlog.${level} should be called`);
t.deepEqual(_logger[level].getCall(0).args, [
Expand All @@ -187,7 +193,7 @@ test.serial("GroupLogger", (t) => {

const _logger = myLogger._getLogger();

["silly", "verbose", "info", "warn", "error"].forEach((level) => {
["silly", "verbose", "perf", "info", "warn", "error"].forEach((level) => {
myLogger[level]("Message 1", "Message 2", "Message 3");
t.true(_logger[level].calledOnce, `npmlog.${level} should be called`);
t.deepEqual(_logger[level].getCall(0).args, [
Expand Down Expand Up @@ -232,7 +238,7 @@ test.serial("TaskLogger", (t) => {

const _logger = myLogger._getLogger();

["silly", "verbose", "info", "warn", "error"].forEach((level) => {
["silly", "verbose", "perf", "info", "warn", "error"].forEach((level) => {
myLogger[level]("Message 1", "Message 2", "Message 3");
t.true(_logger[level].calledOnce, `npmlog.${level} should be called`);
t.deepEqual(_logger[level].getCall(0).args, [
Expand Down

0 comments on commit acf0c71

Please sign in to comment.