@boost/log
Advanced tools
Comparing version 1.2.1 to 2.0.0-alpha.1
@@ -1,6 +0,5 @@ | ||
/// <reference types="debug" /> | ||
import { LogLevel } from './types'; | ||
export declare const debug: import("debug").Debugger; | ||
export declare const msg: import("@boost/translate").Translator; | ||
import { LogLevel, LogLevelLabels } from './types'; | ||
export declare const LOG_LEVELS: LogLevel[]; | ||
export declare const DEFAULT_LABELS: LogLevelLabels; | ||
export declare const MAX_LOG_SIZE = 10485760; | ||
//# sourceMappingURL=constants.d.ts.map |
@@ -6,8 +6,15 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const path_1 = __importDefault(require("path")); | ||
const internal_1 = require("@boost/internal"); | ||
const translate_1 = require("@boost/translate"); | ||
exports.debug = internal_1.createInternalDebugger('log'); | ||
exports.msg = translate_1.createTranslator('log', path_1.default.join(__dirname, '../res')); | ||
exports.MAX_LOG_SIZE = exports.DEFAULT_LABELS = exports.LOG_LEVELS = void 0; | ||
const chalk_1 = __importDefault(require("chalk")); | ||
const translate_1 = __importDefault(require("./translate")); | ||
// In order of priority! | ||
exports.LOG_LEVELS = ['log', 'trace', 'debug', 'info', 'warn', 'error']; | ||
exports.DEFAULT_LABELS = { | ||
debug: chalk_1.default.gray(translate_1.default('log:levelDebug')), | ||
error: chalk_1.default.red(translate_1.default('log:levelError')), | ||
info: chalk_1.default.cyan(translate_1.default('log:levelInfo')), | ||
log: chalk_1.default.yellow(translate_1.default('log:levelLog')), | ||
trace: chalk_1.default.magenta(translate_1.default('log:levelTrace')), | ||
warn: chalk_1.default.yellow(translate_1.default('log:levelWarn')), | ||
}; | ||
exports.MAX_LOG_SIZE = 10485760; |
@@ -1,12 +0,3 @@ | ||
import { Logger, LogLevelLabels, Loggable } from './types'; | ||
export declare const DEFAULT_LABELS: LogLevelLabels; | ||
export interface LoggerOptions { | ||
/** Custom labels to use for each log type. */ | ||
labels?: LogLevelLabels; | ||
/** Writable stream to send `stderr` messages to. */ | ||
stderr?: Loggable; | ||
/** Writable stream to send `stdout` messages to. */ | ||
stdout?: Loggable; | ||
} | ||
export default function createLogger({ labels, stderr, stdout, }?: LoggerOptions): Logger; | ||
import { LoggerOptions, LoggerFunction } from './types'; | ||
export default function createLogger(options: LoggerOptions): LoggerFunction; | ||
//# sourceMappingURL=createLogger.d.ts.map |
@@ -6,54 +6,37 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const util_1 = __importDefault(require("util")); | ||
const chalk_1 = __importDefault(require("chalk")); | ||
const internal_1 = require("@boost/internal"); | ||
const isAllowedLogLevel_1 = __importDefault(require("./isAllowedLogLevel")); | ||
const common_1 = require("@boost/common"); | ||
const Logger_1 = __importDefault(require("./Logger")); | ||
const constants_1 = require("./constants"); | ||
exports.DEFAULT_LABELS = { | ||
debug: chalk_1.default.gray(constants_1.msg('log:levelDebug')), | ||
error: chalk_1.default.red(constants_1.msg('log:levelError')), | ||
info: chalk_1.default.cyan(constants_1.msg('log:levelInfo')), | ||
trace: chalk_1.default.magenta(constants_1.msg('log:levelTrace')), | ||
warn: chalk_1.default.yellow(constants_1.msg('log:levelWarn')), | ||
}; | ||
function createLogger({ labels = {}, stderr = process.stderr, stdout = process.stdout, } = {}) { | ||
let silent = false; | ||
{ | ||
const defaultLevel = internal_1.env('LOG_DEFAULT_LEVEL'); | ||
const maxLevel = internal_1.env('LOG_MAX_LEVEL'); | ||
constants_1.debug('New logger created: %s %s', defaultLevel ? `${defaultLevel} level` : 'all levels', maxLevel ? `(max ${maxLevel})` : ''); | ||
} | ||
function logger(message, ...args) { | ||
const self = logger; | ||
const defaultLevel = internal_1.env('LOG_DEFAULT_LEVEL'); | ||
if (defaultLevel && self[defaultLevel]) { | ||
self[defaultLevel](message, ...args); | ||
function pipeLog(logger, level) { | ||
return (...args) => { | ||
let metadata = {}; | ||
let message = ''; | ||
if (common_1.isObject(args[0])) { | ||
metadata = args.shift(); | ||
} | ||
else { | ||
self.log(message, ...args); | ||
} | ||
} | ||
constants_1.LOG_LEVELS.forEach(level => { | ||
const label = labels[level] || exports.DEFAULT_LABELS[level] || ''; | ||
const stream = level === 'debug' || level === 'error' || level === 'warn' ? stderr : stdout; | ||
Object.defineProperty(logger, level, { | ||
value: function log(message, ...args) { | ||
const maxLevel = internal_1.env('LOG_MAX_LEVEL'); | ||
if (!silent && isAllowedLogLevel_1.default(level, maxLevel)) { | ||
const output = util_1.default.format(message, ...args); | ||
stream.write(level === 'log' ? `${output}\n` : `${label} ${output}\n`); | ||
} | ||
}, | ||
message = args.shift(); | ||
logger.log({ | ||
args, | ||
level, | ||
message, | ||
metadata, | ||
}); | ||
}); | ||
logger.enable = () => { | ||
constants_1.debug('Logger enabled'); | ||
silent = false; | ||
}; | ||
logger.disable = () => { | ||
constants_1.debug('Logger disabled'); | ||
silent = true; | ||
}; | ||
return logger; | ||
} | ||
function createLogger(options) { | ||
const logger = new Logger_1.default(options); | ||
const log = pipeLog(logger); | ||
constants_1.LOG_LEVELS.forEach((level) => { | ||
Object.defineProperty(log, level, { | ||
value: pipeLog(logger, level), | ||
}); | ||
}); | ||
Object.defineProperty(log, 'disable', { | ||
value: () => logger.disable(), | ||
}); | ||
Object.defineProperty(log, 'enable', { | ||
value: () => logger.enable(), | ||
}); | ||
return log; | ||
} | ||
exports.default = createLogger; |
/** | ||
* @copyright 2019, Miles Johnson | ||
* @copyright 2020, Miles Johnson | ||
* @license https://opensource.org/licenses/MIT | ||
*/ | ||
import createLogger, { LoggerOptions } from './createLogger'; | ||
import isAllowedLogLevel from './isAllowedLogLevel'; | ||
import createLogger from './createLogger'; | ||
import Logger from './Logger'; | ||
import Transport from './Transport'; | ||
import ConsoleTransport from './transports/ConsoleTransport'; | ||
import FileTransport from './transports/FileTransport'; | ||
import RotatingFileTransport from './transports/RotatingFileTransport'; | ||
import StreamTransport from './transports/StreamTransport'; | ||
import * as formats from './formats'; | ||
export * from './constants'; | ||
export * from './types'; | ||
export { createLogger, isAllowedLogLevel, LoggerOptions }; | ||
export { createLogger, formats, Logger, Transport, ConsoleTransport, FileTransport, RotatingFileTransport, StreamTransport, }; | ||
//# sourceMappingURL=index.d.ts.map |
"use strict"; | ||
/** | ||
* @copyright 2019, Miles Johnson | ||
* @copyright 2020, Miles Johnson | ||
* @license https://opensource.org/licenses/MIT | ||
*/ | ||
function __export(m) { | ||
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; | ||
} | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
}) : function(o, v) { | ||
o["default"] = v; | ||
}); | ||
var __importStar = (this && this.__importStar) || function (mod) { | ||
if (mod && mod.__esModule) return mod; | ||
var result = {}; | ||
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||
__setModuleDefault(result, mod); | ||
return result; | ||
}; | ||
var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); | ||
}; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
@@ -13,6 +32,20 @@ return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.StreamTransport = exports.RotatingFileTransport = exports.FileTransport = exports.ConsoleTransport = exports.Transport = exports.Logger = exports.formats = exports.createLogger = void 0; | ||
const createLogger_1 = __importDefault(require("./createLogger")); | ||
exports.createLogger = createLogger_1.default; | ||
const isAllowedLogLevel_1 = __importDefault(require("./isAllowedLogLevel")); | ||
exports.isAllowedLogLevel = isAllowedLogLevel_1.default; | ||
__export(require("./constants")); | ||
const Logger_1 = __importDefault(require("./Logger")); | ||
exports.Logger = Logger_1.default; | ||
const Transport_1 = __importDefault(require("./Transport")); | ||
exports.Transport = Transport_1.default; | ||
const ConsoleTransport_1 = __importDefault(require("./transports/ConsoleTransport")); | ||
exports.ConsoleTransport = ConsoleTransport_1.default; | ||
const FileTransport_1 = __importDefault(require("./transports/FileTransport")); | ||
exports.FileTransport = FileTransport_1.default; | ||
const RotatingFileTransport_1 = __importDefault(require("./transports/RotatingFileTransport")); | ||
exports.RotatingFileTransport = RotatingFileTransport_1.default; | ||
const StreamTransport_1 = __importDefault(require("./transports/StreamTransport")); | ||
exports.StreamTransport = StreamTransport_1.default; | ||
const formats = __importStar(require("./formats")); | ||
exports.formats = formats; | ||
__exportStar(require("./constants"), exports); | ||
__exportStar(require("./types"), exports); |
@@ -1,3 +0,3 @@ | ||
import { Logger } from './types'; | ||
export declare function mockLogger(): Logger; | ||
import { LoggerFunction } from './types'; | ||
export declare function mockLogger(): LoggerFunction; | ||
//# sourceMappingURL=testing.d.ts.map |
"use strict"; | ||
/* eslint-disable @typescript-eslint/no-explicit-any */ | ||
/* eslint-disable jest/prefer-spy-on */ | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.mockLogger = void 0; | ||
function mockLogger() { | ||
@@ -5,0 +6,0 @@ const log = jest.fn(); |
@@ -5,16 +5,56 @@ export declare type LogLevel = 'debug' | 'error' | 'log' | 'info' | 'trace' | 'warn'; | ||
}; | ||
export interface Logger { | ||
export interface LogMetadata { | ||
[field: string]: unknown; | ||
} | ||
export interface LogItem { | ||
host: string; | ||
label: string; | ||
level: LogLevel; | ||
message: string; | ||
metadata: LogMetadata; | ||
name: string; | ||
pid: number; | ||
time: Date; | ||
} | ||
export interface LoggableWriter { | ||
(metadata: LogMetadata, message: string, ...args: unknown[]): void; | ||
(message: string, ...args: unknown[]): void; | ||
debug(message: string, ...args: unknown[]): void; | ||
disable(): void; | ||
enable(): void; | ||
error(message: string, ...args: unknown[]): void; | ||
log(message: string, ...args: unknown[]): void; | ||
info(message: string, ...args: unknown[]): void; | ||
trace(message: string, ...args: unknown[]): void; | ||
warn(message: string, ...args: unknown[]): void; | ||
} | ||
export interface Loggable { | ||
write(message: string): void; | ||
debug: LoggableWriter; | ||
disable: () => void; | ||
enable: () => void; | ||
error: LoggableWriter; | ||
log: LoggableWriter; | ||
info: LoggableWriter; | ||
trace: LoggableWriter; | ||
warn: LoggableWriter; | ||
} | ||
export interface LoggerFunction extends Loggable, LoggableWriter { | ||
} | ||
export interface LoggerOptions { | ||
/** Custom labels to use for each log type. */ | ||
labels?: LogLevelLabels; | ||
/** Metadata to include within each log item. */ | ||
metadata?: LogMetadata; | ||
/** Unique name for this logger. */ | ||
name: string; | ||
/** Transports to write messages to. */ | ||
transports?: Transportable[]; | ||
} | ||
export interface Writable { | ||
write: (message: string) => void; | ||
} | ||
export declare type Formatter = (item: LogItem) => string; | ||
export interface Transportable { | ||
levels: LogLevel[]; | ||
format: Formatter; | ||
write: (message: string, item: LogItem) => void | Promise<void>; | ||
} | ||
export interface TransportOptions { | ||
eol?: string; | ||
format?: Formatter | null; | ||
levels: LogLevel[]; | ||
} | ||
export declare type Rotation = 'hourly' | 'daily' | 'weekly' | 'monthly'; | ||
//# sourceMappingURL=types.d.ts.map |
{ | ||
"name": "@boost/log", | ||
"version": "1.2.1", | ||
"version": "2.0.0-alpha.1", | ||
"release": "1592788092197", | ||
"description": "Lightweight level based logging system.", | ||
@@ -14,5 +15,4 @@ "keywords": [ | ||
"types": "./lib/index.d.ts", | ||
"nonce": "1579986563745", | ||
"engines": { | ||
"node": ">=8.9.0" | ||
"node": ">=10.17.0" | ||
}, | ||
@@ -25,5 +25,6 @@ "repository": "https://github.com/milesj/boost/tree/master/packages/log", | ||
"dependencies": { | ||
"@boost/internal": "^1.2.0", | ||
"@boost/translate": "^1.3.10", | ||
"chalk": "^3.0.0" | ||
"@boost/common": "^2.0.0-alpha.1", | ||
"@boost/internal": "^2.0.0-alpha.1", | ||
"@boost/translate": "^2.0.0-alpha.1", | ||
"chalk": "^4.1.0" | ||
}, | ||
@@ -34,3 +35,3 @@ "funding": { | ||
}, | ||
"gitHead": "257f5a0a342a014f3ce9cf8c288879a73b36ef76" | ||
"gitHead": "3fffbcf3231b86592d2083902b8c39a2ed1b2e4c" | ||
} |
@@ -1,2 +0,2 @@ | ||
# Boost Logging | ||
# Logging - Boost | ||
@@ -3,0 +3,0 @@ [![Build Status](https://github.com/milesj/boost/workflows/Build/badge.svg)](https://github.com/milesj/boost/actions?query=branch%3Amaster) |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
68208
68
1404
4
2
4
1
+ Added@boost/common@^2.0.0-alpha.1
+ Added@boost/common@2.8.2(transitive)
+ Added@boost/decorators@2.1.4(transitive)
+ Added@boost/internal@2.2.3(transitive)
+ Added@boost/translate@2.2.8(transitive)
+ Added@nodelib/fs.scandir@2.1.5(transitive)
+ Added@nodelib/fs.stat@2.0.5(transitive)
+ Added@nodelib/fs.walk@1.2.8(transitive)
+ Addedbraces@3.0.3(transitive)
+ Addedchalk@4.1.2(transitive)
+ Addedcross-spawn@7.0.6(transitive)
+ Addedexeca@4.1.0(transitive)
+ Addedfast-glob@3.3.3(transitive)
+ Addedfastq@1.19.0(transitive)
+ Addedfill-range@7.1.1(transitive)
+ Addedget-stream@5.2.0(transitive)
+ Addedglob-parent@5.1.2(transitive)
+ Addedhuman-signals@1.1.1(transitive)
+ Addedi18next@20.6.1(transitive)
+ Addedis-extglob@2.1.1(transitive)
+ Addedis-glob@4.0.3(transitive)
+ Addedis-number@7.0.0(transitive)
+ Addedis-stream@2.0.1(transitive)
+ Addedmerge-stream@2.0.0(transitive)
+ Addedmerge2@1.4.1(transitive)
+ Addedmicromatch@4.0.8(transitive)
+ Addednpm-run-path@4.0.1(transitive)
+ Addedonetime@5.1.2(transitive)
+ Addedos-locale@5.0.0(transitive)
+ Addedpath-key@3.1.1(transitive)
+ Addedpicomatch@2.3.1(transitive)
+ Addedpretty-ms@7.0.1(transitive)
+ Addedqueue-microtask@1.2.3(transitive)
+ Addedreusify@1.0.4(transitive)
+ Addedrun-parallel@1.2.0(transitive)
+ Addedshebang-command@2.0.0(transitive)
+ Addedshebang-regex@3.0.0(transitive)
+ Addedstrip-final-newline@2.0.0(transitive)
+ Addedto-regex-range@5.0.1(transitive)
+ Addedwhich@2.0.2(transitive)
- Removed@boost/common@1.9.0(transitive)
- Removed@boost/internal@1.2.0(transitive)
- Removed@boost/translate@1.3.10(transitive)
- Removedchalk@3.0.0(transitive)
- Removedcross-spawn@6.0.6(transitive)
- Removedexeca@1.0.0(transitive)
- Removedget-stream@4.1.0(transitive)
- Removedi18next@19.9.2(transitive)
- Removedis-stream@1.1.0(transitive)
- Removednice-try@1.0.5(transitive)
- Removednpm-run-path@2.0.2(transitive)
- Removedos-locale@4.0.0(transitive)
- Removedp-finally@1.0.0(transitive)
- Removedpath-key@2.0.1(transitive)
- Removedpretty-ms@5.1.0(transitive)
- Removedsemver@5.7.2(transitive)
- Removedshebang-command@1.2.0(transitive)
- Removedshebang-regex@1.0.0(transitive)
- Removedstrip-eof@1.0.0(transitive)
- Removedwhich@1.3.1(transitive)
Updatedchalk@^4.1.0