Skip to content

Commit

Permalink
feat: reconfigure on top of LogWriter
Browse files Browse the repository at this point in the history
  • Loading branch information
medikoo committed Apr 8, 2019
1 parent ac9fe50 commit 30f8ffa
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 40 deletions.
50 changes: 13 additions & 37 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,39 +1,15 @@
"use strict";

const d = require("d")
, rootLogger = require("log")
, emitter = require("log/lib/emitter")
, registerMaster = require("log/lib/register-master")
, setupVisibility = require("log/lib/setup-visibility")
, formatMessage = require("log-node/lib/format-event-message")
, levelPrefixes = require("log-node/lib/level-prefixes");

const setupPrefixes = levelLogger => {
levelLogger.levelMessagePrefix = levelPrefixes[levelLogger.level];
Object.defineProperty(
levelLogger, "namespaceMessagePrefix", d.gs(function () { return this.namespace; })
);
};

module.exports = () => {
// Ensure it's the only log writer initialzed in a process
registerMaster();

// Read logs visiblity settings from env variables
setupVisibility(
process.env.LOG_LEVEL, (process.env.LOG_DEBUG || process.env.DEBUG || "").split(",")
);

// Resolve level and namespace log message prefixes
// - for already initialized loggers
rootLogger.getAllInitializedLevels().forEach(setupPrefixes);
// - for loggers to be initialized
emitter.on("init", event => { if (!event.logger.namespace) setupPrefixes(event.logger); });

// Write logs to stderr
emitter.on("log", event => {
if (!event.logger.isEnabled) return;
formatMessage(event);
console.error(event.message);
});
};
const formatParts = require("sprintf-kit/format-parts")
, LogWriter = require("log/lib/writer")
, resolveParts = require("log-node/lib/resolve-format-parts");

class AwsLambdaLogWriter extends LogWriter {
constructor(options = {}) { super(process.env, options); }
resolveMessageContent(event) {
event.messageContent = formatParts(resolveParts(...event.messageTokens));
}
writeMessage(event) { console.error(event.message); }
}

module.exports = (options = {}) => new AwsLambdaLogWriter(options);
7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
"repository": "medikoo/log-aws-lambda.git",
"dependencies": {
"d": "^1.0.0",
"log-node": "^5.0.0"
"log-node": "^6.0.0",
"sprintf-kit": "^2.0.0"
},
"devDependencies": {
"eslint": "^5.16.0",
Expand All @@ -24,7 +25,7 @@
"git-list-updated": "^1.1.2",
"husky": "^1.3.1",
"lint-staged": "^8.1.5",
"log": "^5.0.0",
"log": "^5.1.0",
"ncjsm": "^2.0.1",
"nyc": "^13.3.0",
"prettier-elastic": "^1.16.4",
Expand Down Expand Up @@ -60,7 +61,7 @@
},
"scripts": {
"coverage": "nyc --reporter=lcov --reporter=html --reporter=text-summary npm test",
"check-coverage": "npm run coverage && nyc check-coverage --statements 100 --function 100 --branches 100 --lines 100",
"check-coverage": "npm run coverage && nyc check-coverage --statements 100 --function 100 --branches 50 --lines 100",
"lint": "eslint --ignore-path=.gitignore .",
"lint-updated": "pipe-git-updated --ext=js -- eslint --ignore-pattern '!*'",
"prettier-check-updated": "pipe-git-updated --ext=css --ext=html --ext=js --ext=json --ext=md --ext=yaml --ext=yml -- prettier -c",
Expand Down

0 comments on commit 30f8ffa

Please sign in to comment.