New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@dotcom-reliability-kit/logger

Package Overview
Dependencies
Maintainers
4
Versions
51
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@dotcom-reliability-kit/logger - npm Package Compare versions

Comparing version 0.1.0 to 0.1.1

1

lib/index.d.ts
declare const _exports: {
"__#1@#logLevel": Logger.LogLevel;
"__#1@#baseLogData": any;
"__#1@#transforms": Logger.LogTransform[];
"__#1@#logTransport": Logger.LogTransport;

@@ -5,0 +6,0 @@ "__#1@#deprecatedMethodTracker": string[];

10

lib/logger.d.ts

@@ -26,3 +26,3 @@ export = Logger;

declare namespace Logger {
export { exports as default, LogLevel, LogData, LoggerOptions, PrivateLoggerOptions, LogTransport, LogLevelInfo };
export { exports as default, LogLevel, LogData, LoggerOptions, PrivateLoggerOptions, LogTransform, LogTransport, LogLevelInfo };
}

@@ -43,2 +43,3 @@ type LogLevel = "silly" | "data" | "debug" | "verbose" | "info" | "warn" | "error" | "fatal";

logLevel?: LogLevel | undefined;
transforms?: LogTransform[] | undefined;
withTimestamps?: boolean | undefined;

@@ -50,4 +51,9 @@ };

declare namespace exports {
export { exports as default, LogLevel, LogData, LoggerOptions, PrivateLoggerOptions, LogTransport, LogLevelInfo };
export { exports as default, LogLevel, LogData, LoggerOptions, PrivateLoggerOptions, LogTransform, LogTransport, LogLevelInfo };
}
type LogTransform = (logData: {
[x: string]: any;
}) => {
[x: string]: any;
};
type LogLevelInfo = {

@@ -54,0 +60,0 @@ logLevel: LogLevel;

@@ -20,2 +20,4 @@ const pino = require('pino').default;

* beneath this will be ignored.
* @property {Array<LogTransform>} [transforms = []]
* Transforms to apply to logs before sending.
* @property {boolean} [withTimestamps = true]

@@ -32,2 +34,10 @@ * Whether to send the timestamp that each log method was called.

/**
* @callback LogTransform
* @param {Object<string, any>} logData
* The log data to transform.
* @returns {Object<string, any>}
* Returns the transformed log data.
*/
/**
* @typedef {object} LogTransport

@@ -92,2 +102,7 @@ * @property {string} [level]

/**
* @type {Array<LogTransform>}
*/
#transforms = [];
/**
* @type {LogTransport}

@@ -126,2 +141,17 @@ */

// Default and set the transforms option
if (options.transforms) {
if (
!Array.isArray(options.transforms) ||
!options.transforms.every(
(transform) => typeof transform === 'function'
)
) {
throw new TypeError(
'The `transforms` option must be an array of functions'
);
}
this.#transforms = options.transforms;
}
// Default and set the timestamps option.

@@ -190,3 +220,4 @@ const withTimestamps = options.withTimestamps !== false;

baseLogData: Object.assign({}, this.#baseLogData, baseLogData),
logLevel: this.#logLevel
logLevel: this.#logLevel,
transforms: this.#transforms
});

@@ -276,4 +307,13 @@ }

// Transform the log data
let transformedLogData = structuredClone(sanitizedLogData);
if (this.#transforms.length) {
transformedLogData = this.#transforms.reduce(
(logData, transform) => transform(logData),
transformedLogData
);
}
// Send the log
this.transport[logLevel](sanitizedLogData);
this.transport[logLevel](transformedLogData);

@@ -280,0 +320,0 @@ // If the log level is deprecated, then log a warning about that

{
"name": "@dotcom-reliability-kit/logger",
"version": "0.1.0",
"version": "0.1.1",
"description": "A simple and fast logger based on Pino, with FT preferences baked in",

@@ -5,0 +5,0 @@ "repository": {

@@ -15,2 +15,3 @@

* [`options.logLevel`](#optionsloglevel)
* [`options.transforms`](#optionstransforms)
* [`options.withTimestamps`](#optionswithtimestamps)

@@ -148,2 +149,41 @@ * [`logger.log()` and shortcut methods](#loggerlog-and-shortcut-methods)

#### `options.transforms`
An array of functions which are called on log data before logs are output. This allows you to apply transformations to the final log object before it's sent.
Each log transform must be a function which accepts a single object argument and returns an object. Expressed as TypeScript types:
```ts
type LogData = {[x: string]: any};
type Tranform = (logData: LogData) => LogData
```
You can pass as many transforms as you need, though you must consider performance – each function will be called on every log that's sent.
```js
function uppercaseProperties(logData) {
const entries = Object.entries(logData).map(([property, value]) => {
return [property.toUpperCase(), value];
});
return Object.fromEntries(entries);
}
const logger = new Logger({
transforms: [
uppercaseProperties
]
});
logger.info({
time: 1234567890,
message: 'Hello World'
});
// Outputs:
// {
// "LEVEL": "info",
// "MESSAGE": "This is a log",
// "TIME": 1234567890
// }
```
#### `options.withTimestamps`

@@ -150,0 +190,0 @@

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc