README
Plop Logger
Why another logger?
There are already plenty of logging related lib on npm. This is just a basic personal side project, so if you need a production-ready lib, you probably should use another lib.
This lib try to find the right balance between simplicity and features, with a good quality code.
Basic usage
Install with npm i plop-logger or yarn add plop-logger.
import { LogLevel, Logger } from "plop-logger";
// Get a logger with the `plop` name
const logger = Logger.getLogger("plop");
// Set level (default to Info)
logger.level = LogLevel.Debug;
// Basic usage
logger.trace("a trace message"); // omitted because level is Debug (> Trace)
logger.debug("a debug message"); // displayed because level is Debug
logger.info("a debug message"); // displayed because level is Debug (< Info)
logger.warn("a debug message"); // ...
logger.error("a debug message"); // ...
// Avoid computation if not necessary
logger.trace(() => `sum: ${1 + 1}`); // computation omitted
logger.info(() => `mult: ${3 * 14}`); // computation done
// Add an argument
logger.info("message to print", "Plop!"); // 'Plop!' is an argument
Configuration
You can configure the logger with the static Logger.config property.
import { defaultConfig, Logger } from "plop-logger";
// Create a custom config
// using ISO Date
// every logger named 'service' or 'service.*' should log warnings and errors
// but the logger named 'service.plopper' should log everything
const customConfig = {
...defaultConfig,
levels: {
service: "warn",
"service.plopper": "trace" // level is case-insensitive
},
formatDate(date: Date) {
return date.toISOString();
}
};
// Setting the custom config
Logger.config = customConfig;
// Try it
const logger = Logger.getLogger("plop");
logger.info("test"); // Info 2019-08-10T17:23:19.736Z plop - test
Configuration:
appender: Console: the appender, by default using the globalconsole,defaultLevel: LogLevel: the default level, by defaultInfo,levels: LoggerLevels: can configure level by name or parent name, empty by default,formatLevel(level: LogLevel): string: display the level, by defaultLogLevel[level],formatDate(now: Date): string: display the log date, by defaultDate#toLocaleTimeString(),formatName(name: string): string: display the name, by default the name,formatMessage(message: string): string: format the message, by default the message,formatArg(arg: any | null): string: format the argument, by default usetoString()or the empty string,formatDump(obj: any): string[]: format an object for a dump, by default useJSON#stringify.
Color Configuration
You can use a colorful configuration:
import { Logger } from "plop-logger";
import { colorConfig } from "plop-logger/extra/colorConfig";
// Use the colorConfig
Logger.config = colorConfig;
// ...

Color + Emoji Configuration
The key feature of this project is the color + emoji configuration :
import { Logger } from "plop-logger";
import { colorEmojiConfig } from "plop-logger/extra/colorEmojiConfig";
// Use the colorEmojiConfig
Logger.config = colorEmojiConfig;
// ...
