@logtape/adaptor-bunyan 2.1.0-dev.0 → 2.1.0-dev.540
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -8
- package/dist/mod.cjs +19 -14
- package/dist/mod.d.cts +8 -5
- package/dist/mod.d.cts.map +1 -1
- package/dist/mod.d.ts +8 -5
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +19 -14
- package/dist/mod.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -130,7 +130,7 @@ Customizing interpolated value formatting
|
|
|
130
130
|
|
|
131
131
|
By default the adapter renders interpolated values in the message template
|
|
132
132
|
with `node:util.inspect()` (`breakLength: Infinity`). Provide a
|
|
133
|
-
`valueFormatter` to override that
|
|
133
|
+
`valueFormatter` to override that, for example to use `JSON.stringify`
|
|
134
134
|
or a redaction-aware serializer:
|
|
135
135
|
|
|
136
136
|
~~~~ typescript
|
|
@@ -145,14 +145,15 @@ const sink = getBunyanSink(logger, {
|
|
|
145
145
|
Properties and Bunyan reserved fields
|
|
146
146
|
-------------------------------------
|
|
147
147
|
|
|
148
|
-
LogTape `record.properties` are passed
|
|
149
|
-
|
|
150
|
-
the logger to matching top-level fields.
|
|
148
|
+
LogTape `record.properties` are passed to Bunyan as the merge-object of
|
|
149
|
+
the call. Bunyan automatically applies any `serializers` configured on
|
|
150
|
+
the logger to matching top-level fields. The adapter also sets the
|
|
151
|
+
merge-object's `time` field to a `Date` derived from `record.timestamp`
|
|
152
|
+
so the resulting Bunyan record reflects when LogTape created the record,
|
|
153
|
+
not when the sink call ran.
|
|
151
154
|
|
|
152
|
-
Bunyan
|
|
153
|
-
`
|
|
154
|
-
contain any of these names, Bunyan's normal collision behaviour applies —
|
|
155
|
-
configure your structured property names to avoid conflicts.
|
|
155
|
+
Bunyan's other reserved field names (`name`, `hostname`, `pid`, `level`,
|
|
156
|
+
`msg`, `src`, `v`) should not be used as keys in your LogTape properties.
|
|
156
157
|
|
|
157
158
|
|
|
158
159
|
Docs
|
package/dist/mod.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
|
|
2
|
-
const node_util = require_rolldown_runtime.__toESM(require("node:util"));
|
|
3
2
|
const __logtape_logtape = require_rolldown_runtime.__toESM(require("@logtape/logtape"));
|
|
3
|
+
const node_util = require_rolldown_runtime.__toESM(require("node:util"));
|
|
4
4
|
|
|
5
5
|
//#region src/mod.ts
|
|
6
6
|
function defaultValueFormatter(value) {
|
|
@@ -44,11 +44,14 @@ function decorateCategoryEnd(category, decorator) {
|
|
|
44
44
|
* Bunyan does not provide a global default logger; you must create one
|
|
45
45
|
* with `bunyan.createLogger({ name: "..." })` and pass it in.
|
|
46
46
|
*
|
|
47
|
-
* LogTape's `record.properties` are passed
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
47
|
+
* LogTape's `record.properties` are passed to Bunyan as the merge-object,
|
|
48
|
+
* so any `serializers` configured on the Bunyan logger apply automatically.
|
|
49
|
+
* The adapter also sets the merge-object's `time` field to a `Date`
|
|
50
|
+
* derived from `record.timestamp`, so the resulting Bunyan record reflects
|
|
51
|
+
* when LogTape created the record rather than when the sink call ran.
|
|
52
|
+
*
|
|
53
|
+
* Bunyan's other reserved fields (`name`, `hostname`, `pid`, `level`,
|
|
54
|
+
* `msg`, `src`, `v`) should not be used as property keys.
|
|
52
55
|
*
|
|
53
56
|
* @example
|
|
54
57
|
* ```typescript
|
|
@@ -81,21 +84,23 @@ function decorateCategoryEnd(category, decorator) {
|
|
|
81
84
|
*/
|
|
82
85
|
function getBunyanSink(logger, options = {}) {
|
|
83
86
|
const categoryOptions = !options.category ? void 0 : typeof options.category === "object" ? options.category : {};
|
|
84
|
-
const category = categoryOptions
|
|
87
|
+
const category = categoryOptions === void 0 ? void 0 : {
|
|
85
88
|
separator: categoryOptions.separator ?? "·",
|
|
86
89
|
position: categoryOptions.position ?? "start",
|
|
87
90
|
decorator: categoryOptions.decorator ?? ":"
|
|
88
91
|
};
|
|
89
92
|
const valueFormatter = options.valueFormatter ?? defaultValueFormatter;
|
|
90
93
|
return (record) => {
|
|
91
|
-
let message =
|
|
92
|
-
if (category
|
|
94
|
+
let message = renderMessage(record.message, valueFormatter);
|
|
95
|
+
if (category !== void 0 && record.category.length > 0) {
|
|
93
96
|
const joined = record.category.join(category.separator);
|
|
94
|
-
if (category.position === "start") message
|
|
95
|
-
message
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
if (category.position === "start") message = decorateCategoryStart(joined, category.decorator) + message;
|
|
98
|
+
else message = message + decorateCategoryEnd(joined, category.decorator);
|
|
99
|
+
}
|
|
100
|
+
const properties = {
|
|
101
|
+
...record.properties,
|
|
102
|
+
time: new Date(record.timestamp)
|
|
103
|
+
};
|
|
99
104
|
switch (record.level) {
|
|
100
105
|
case "trace":
|
|
101
106
|
logger.trace(properties, message);
|
package/dist/mod.d.cts
CHANGED
|
@@ -82,11 +82,14 @@ interface CategoryOptions {
|
|
|
82
82
|
* Bunyan does not provide a global default logger; you must create one
|
|
83
83
|
* with `bunyan.createLogger({ name: "..." })` and pass it in.
|
|
84
84
|
*
|
|
85
|
-
* LogTape's `record.properties` are passed
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
85
|
+
* LogTape's `record.properties` are passed to Bunyan as the merge-object,
|
|
86
|
+
* so any `serializers` configured on the Bunyan logger apply automatically.
|
|
87
|
+
* The adapter also sets the merge-object's `time` field to a `Date`
|
|
88
|
+
* derived from `record.timestamp`, so the resulting Bunyan record reflects
|
|
89
|
+
* when LogTape created the record rather than when the sink call ran.
|
|
90
|
+
*
|
|
91
|
+
* Bunyan's other reserved fields (`name`, `hostname`, `pid`, `level`,
|
|
92
|
+
* `msg`, `src`, `v`) should not be used as property keys.
|
|
90
93
|
*
|
|
91
94
|
* @example
|
|
92
95
|
* ```typescript
|
package/dist/mod.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.cts","names":[],"sources":["../src/mod.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;AA2BiB,UA3BA,YAAA,CA2BA;EAAM,KAAA,CAAA,WAAA,EAzBN,MAyBM,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAUN,KAAA,CAAA,WAAA,EA9BA,MA8BiB,CAAA,MAOF,EAAA,OAAA,CAAA,EAAA,MAAe,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAoB9B,IAAA,CAAA,WAAA,EApDA,MAoDe,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;
|
|
1
|
+
{"version":3,"file":"mod.d.cts","names":[],"sources":["../src/mod.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;AA2BiB,UA3BA,YAAA,CA2BA;EAAM,KAAA,CAAA,WAAA,EAzBN,MAyBM,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAUN,KAAA,CAAA,WAAA,EA9BA,MA8BiB,CAAA,MAOF,EAAA,OAAA,CAAA,EAAA,MAAe,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAoB9B,IAAA,CAAA,WAAA,EApDA,MAoDe,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAkJhB,IAAA,CAAA,WAAa,EAjMZ,MAiMY,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAAA,KAAA,CAAA,WAAA,EA5LZ,MA4LY,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAAA,KACnB,CAAA,WAAA,EAxLO,MAwLP,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;;;AAEH;AA8FP;;AACU,UA/QO,iBAAA,CA+QP;EAAY;AACW;;;;;gCAzQD;;;;;;;;;;;;;;;;;;UAoBf,eAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkJD,aAAA,SACN,wBACC,oBACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8Fa,OAAA,SACN,wBACC"}
|
package/dist/mod.d.ts
CHANGED
|
@@ -82,11 +82,14 @@ interface CategoryOptions {
|
|
|
82
82
|
* Bunyan does not provide a global default logger; you must create one
|
|
83
83
|
* with `bunyan.createLogger({ name: "..." })` and pass it in.
|
|
84
84
|
*
|
|
85
|
-
* LogTape's `record.properties` are passed
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
85
|
+
* LogTape's `record.properties` are passed to Bunyan as the merge-object,
|
|
86
|
+
* so any `serializers` configured on the Bunyan logger apply automatically.
|
|
87
|
+
* The adapter also sets the merge-object's `time` field to a `Date`
|
|
88
|
+
* derived from `record.timestamp`, so the resulting Bunyan record reflects
|
|
89
|
+
* when LogTape created the record rather than when the sink call ran.
|
|
90
|
+
*
|
|
91
|
+
* Bunyan's other reserved fields (`name`, `hostname`, `pid`, `level`,
|
|
92
|
+
* `msg`, `src`, `v`) should not be used as property keys.
|
|
90
93
|
*
|
|
91
94
|
* @example
|
|
92
95
|
* ```typescript
|
package/dist/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","names":[],"sources":["../src/mod.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;AA2BiB,UA3BA,YAAA,CA2BA;EAAM,KAAA,CAAA,WAAA,EAzBN,MAyBM,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAUN,KAAA,CAAA,WAAA,EA9BA,MA8BiB,CAAA,MAOF,EAAA,OAAA,CAAA,EAAA,MAAe,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAoB9B,IAAA,CAAA,WAAA,EApDA,MAoDe,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;
|
|
1
|
+
{"version":3,"file":"mod.d.ts","names":[],"sources":["../src/mod.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;AA2BiB,UA3BA,YAAA,CA2BA;EAAM,KAAA,CAAA,WAAA,EAzBN,MAyBM,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAUN,KAAA,CAAA,WAAA,EA9BA,MA8BiB,CAAA,MAOF,EAAA,OAAA,CAAA,EAAA,MAAe,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAoB9B,IAAA,CAAA,WAAA,EApDA,MAoDe,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAkJhB,IAAA,CAAA,WAAa,EAjMZ,MAiMY,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAAA,KAAA,CAAA,WAAA,EA5LZ,MA4LY,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAAA,KACnB,CAAA,WAAA,EAxLO,MAwLP,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;;;AAEH;AA8FP;;AACU,UA/QO,iBAAA,CA+QP;EAAY;AACW;;;;;gCAzQD;;;;;;;;;;;;;;;;;;UAoBf,eAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkJD,aAAA,SACN,wBACC,oBACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8Fa,OAAA,SACN,wBACC"}
|
package/dist/mod.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { inspect } from "node:util";
|
|
2
1
|
import { configureSync } from "@logtape/logtape";
|
|
2
|
+
import { inspect } from "node:util";
|
|
3
3
|
|
|
4
4
|
//#region src/mod.ts
|
|
5
5
|
function defaultValueFormatter(value) {
|
|
@@ -43,11 +43,14 @@ function decorateCategoryEnd(category, decorator) {
|
|
|
43
43
|
* Bunyan does not provide a global default logger; you must create one
|
|
44
44
|
* with `bunyan.createLogger({ name: "..." })` and pass it in.
|
|
45
45
|
*
|
|
46
|
-
* LogTape's `record.properties` are passed
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
46
|
+
* LogTape's `record.properties` are passed to Bunyan as the merge-object,
|
|
47
|
+
* so any `serializers` configured on the Bunyan logger apply automatically.
|
|
48
|
+
* The adapter also sets the merge-object's `time` field to a `Date`
|
|
49
|
+
* derived from `record.timestamp`, so the resulting Bunyan record reflects
|
|
50
|
+
* when LogTape created the record rather than when the sink call ran.
|
|
51
|
+
*
|
|
52
|
+
* Bunyan's other reserved fields (`name`, `hostname`, `pid`, `level`,
|
|
53
|
+
* `msg`, `src`, `v`) should not be used as property keys.
|
|
51
54
|
*
|
|
52
55
|
* @example
|
|
53
56
|
* ```typescript
|
|
@@ -80,21 +83,23 @@ function decorateCategoryEnd(category, decorator) {
|
|
|
80
83
|
*/
|
|
81
84
|
function getBunyanSink(logger, options = {}) {
|
|
82
85
|
const categoryOptions = !options.category ? void 0 : typeof options.category === "object" ? options.category : {};
|
|
83
|
-
const category = categoryOptions
|
|
86
|
+
const category = categoryOptions === void 0 ? void 0 : {
|
|
84
87
|
separator: categoryOptions.separator ?? "·",
|
|
85
88
|
position: categoryOptions.position ?? "start",
|
|
86
89
|
decorator: categoryOptions.decorator ?? ":"
|
|
87
90
|
};
|
|
88
91
|
const valueFormatter = options.valueFormatter ?? defaultValueFormatter;
|
|
89
92
|
return (record) => {
|
|
90
|
-
let message =
|
|
91
|
-
if (category
|
|
93
|
+
let message = renderMessage(record.message, valueFormatter);
|
|
94
|
+
if (category !== void 0 && record.category.length > 0) {
|
|
92
95
|
const joined = record.category.join(category.separator);
|
|
93
|
-
if (category.position === "start") message
|
|
94
|
-
message
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
if (category.position === "start") message = decorateCategoryStart(joined, category.decorator) + message;
|
|
97
|
+
else message = message + decorateCategoryEnd(joined, category.decorator);
|
|
98
|
+
}
|
|
99
|
+
const properties = {
|
|
100
|
+
...record.properties,
|
|
101
|
+
time: new Date(record.timestamp)
|
|
102
|
+
};
|
|
98
103
|
switch (record.level) {
|
|
99
104
|
case "trace":
|
|
100
105
|
logger.trace(properties, message);
|
package/dist/mod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","names":["value: unknown","parts: readonly (string | unknown)[]","valueFormatter: (value: unknown) => string","category: string","decorator: Required<CategoryOptions>[\"decorator\"]","logger: BunyanLogger","options: BunyanSinkOptions","category: Required<CategoryOptions> | undefined","record: LogRecord"],"sources":["../src/mod.ts"],"sourcesContent":["import { inspect } from \"node:util\";\nimport { configureSync, type LogRecord, type Sink } from \"@logtape/logtape\";\n\n/**\n * A structural representation of a [Bunyan] logger sufficient for the\n * adapter's needs. Avoids importing Bunyan's own type definitions so the\n * package builds cleanly under both Deno and Node.js.\n *\n * [Bunyan]: https://github.com/trentm/node-bunyan\n *\n * @since 2.1.0\n */\nexport interface BunyanLogger {\n trace(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n debug(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n info(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n warn(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n error(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n fatal(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n}\n\n/**\n * Options for configuring the Bunyan sink adapter.\n * @since 2.1.0\n */\nexport interface BunyanSinkOptions {\n /**\n * Configuration for how LogTape categories are handled in Bunyan logs.\n * - `false` or `undefined`: Categories are not included in the log message\n * - `true`: Categories are included with default formatting\n * - `CategoryOptions`: Custom category formatting configuration\n */\n readonly category?: boolean | CategoryOptions;\n\n /**\n * A function that converts an interpolated value in the message template\n * to a string. By default, values are formatted with\n * `node:util#inspect()` using `breakLength: Infinity` so each value\n * appears on a single line in the rendered `msg` field.\n *\n * Supply a custom formatter to use, for example, `JSON.stringify`,\n * a redaction-aware serializer, or any other strategy.\n * @default `(value) => inspect(value, { breakLength: Infinity })`\n */\n readonly valueFormatter?: (value: unknown) => string;\n}\n\n/**\n * Configuration options for formatting LogTape categories in Bunyan log\n * messages.\n * @since 2.1.0\n */\nexport interface CategoryOptions {\n /**\n * The separator used to join category parts when multiple categories exist.\n * @default \"·\"\n */\n readonly separator?: string;\n\n /**\n * Where to position the category in the log message.\n * - `\"start\"`: Category appears at the beginning of the message\n * - `\"end\"`: Category appears at the end of the message\n * @default \"start\"\n */\n readonly position?: \"start\" | \"end\";\n\n /**\n * The decorator used to format the category in the log message.\n * - `\"[]\"`: [category] format\n * - `\"()\"`: (category) format\n * - `\"<>\"`: <category> format\n * - `\"{}\"`: {category} format\n * - `\":\"`: category: format\n * - `\"-\"`: category - format\n * - `\"|\"`: category | format\n * - `\"/\"`: category / format\n * - `\"\"`: category format (no decoration)\n * @default \":\"\n */\n readonly decorator?: \"[]\" | \"()\" | \"<>\" | \"{}\" | \":\" | \"-\" | \"|\" | \"/\" | \"\";\n}\n\nfunction defaultValueFormatter(value: unknown): string {\n return inspect(value, { breakLength: Infinity });\n}\n\nfunction renderMessage(\n parts: readonly (string | unknown)[],\n valueFormatter: (value: unknown) => string,\n): string {\n let rendered = \"\";\n for (let i = 0; i < parts.length; i++) {\n if (i % 2 === 0) {\n rendered += parts[i] as string;\n } else {\n rendered += valueFormatter(parts[i]);\n }\n }\n return rendered;\n}\n\nfunction decorateCategoryStart(\n category: string,\n decorator: Required<CategoryOptions>[\"decorator\"],\n): string {\n switch (decorator) {\n case \"[]\":\n return `[${category}] `;\n case \"()\":\n return `(${category}) `;\n case \"<>\":\n return `<${category}> `;\n case \"{}\":\n return `{${category}} `;\n case \":\":\n return `${category}: `;\n case \"-\":\n return `${category} - `;\n case \"|\":\n return `${category} | `;\n case \"/\":\n return `${category} / `;\n case \"\":\n return `${category} `;\n }\n}\n\nfunction decorateCategoryEnd(\n category: string,\n decorator: Required<CategoryOptions>[\"decorator\"],\n): string {\n switch (decorator) {\n case \"[]\":\n return ` [${category}]`;\n case \"()\":\n return ` (${category})`;\n case \"<>\":\n return ` <${category}>`;\n case \"{}\":\n return ` {${category}}`;\n case \":\":\n return `: ${category}`;\n case \"-\":\n return ` - ${category}`;\n case \"|\":\n return ` | ${category}`;\n case \"/\":\n return ` / ${category}`;\n case \"\":\n return ` ${category}`;\n }\n}\n\n/**\n * Creates a LogTape sink that forwards log records to a Bunyan logger.\n *\n * Bunyan does not provide a global default logger; you must create one\n * with `bunyan.createLogger({ name: \"...\" })` and pass it in.\n *\n * LogTape's `record.properties` are passed verbatim to Bunyan as the\n * merge-object, so any `serializers` configured on the Bunyan logger\n * apply automatically. Bunyan's reserved fields (`name`, `hostname`,\n * `pid`, `level`, `time`, `msg`, `src`, `v`) should not be used as\n * property keys.\n *\n * @example\n * ```typescript\n * import { configure } from \"@logtape/logtape\";\n * import { getBunyanSink } from \"@logtape/adaptor-bunyan\";\n * import bunyan from \"bunyan\";\n *\n * const bunyanLogger = bunyan.createLogger({ name: \"my-app\" });\n *\n * await configure({\n * sinks: {\n * bunyan: getBunyanSink(bunyanLogger, {\n * category: {\n * position: \"start\",\n * decorator: \"[]\",\n * separator: \".\"\n * }\n * })\n * },\n * loggers: [\n * { category: \"my-library\", sinks: [\"bunyan\"] }\n * ]\n * });\n * ```\n *\n * @param logger The Bunyan logger instance to forward logs to.\n * @param options Configuration options for the sink adapter.\n * @returns A LogTape sink function that can be used in LogTape configuration.\n * @since 2.1.0\n */\nexport function getBunyanSink(\n logger: BunyanLogger,\n options: BunyanSinkOptions = {},\n): Sink {\n const categoryOptions = !options.category\n ? undefined\n : typeof options.category === \"object\"\n ? options.category\n : {};\n const category: Required<CategoryOptions> | undefined =\n categoryOptions == null ? undefined : {\n separator: categoryOptions.separator ?? \"·\",\n position: categoryOptions.position ?? \"start\",\n decorator: categoryOptions.decorator ?? \":\",\n };\n const valueFormatter = options.valueFormatter ?? defaultValueFormatter;\n return (record: LogRecord) => {\n let message = \"\";\n if (category != null && record.category.length > 0) {\n const joined = record.category.join(category.separator);\n if (category.position === \"start\") {\n message += decorateCategoryStart(joined, category.decorator);\n }\n message += renderMessage(record.message, valueFormatter);\n if (category.position === \"end\") {\n message += decorateCategoryEnd(joined, category.decorator);\n }\n } else {\n message = renderMessage(record.message, valueFormatter);\n }\n const properties = record.properties as Record<string, unknown>;\n switch (record.level) {\n case \"trace\":\n logger.trace(properties, message);\n return;\n case \"debug\":\n logger.debug(properties, message);\n return;\n case \"info\":\n logger.info(properties, message);\n return;\n case \"warning\":\n logger.warn(properties, message);\n return;\n case \"error\":\n logger.error(properties, message);\n return;\n case \"fatal\":\n logger.fatal(properties, message);\n return;\n }\n };\n}\n\n/**\n * Automatically configures LogTape to route all logs to a Bunyan logger.\n *\n * This is a convenience function that wires up `getBunyanSink()` as\n * LogTape's catch-all sink and routes the meta logger\n * (`[\"logtape\", \"meta\"]`) to the same sink with `lowestLevel: \"warning\"`,\n * matching the conventions of the other adapter packages.\n *\n * Bunyan does not provide a global default logger, so the logger argument\n * is required. Create one with `bunyan.createLogger({ name: \"...\" })`\n * and pass it in.\n *\n * @example Basic auto-configuration\n * ```typescript\n * import bunyan from \"bunyan\";\n * import { install } from \"@logtape/adaptor-bunyan\";\n *\n * const bunyanLogger = bunyan.createLogger({ name: \"my-app\" });\n * install(bunyanLogger);\n *\n * import { getLogger } from \"@logtape/logtape\";\n * const logger = getLogger(\"my-app\");\n * logger.info(\"This will be logged through Bunyan\");\n * ```\n *\n * @example Auto-configuration with custom options\n * ```typescript\n * import bunyan from \"bunyan\";\n * import { install } from \"@logtape/adaptor-bunyan\";\n *\n * const bunyanLogger = bunyan.createLogger({ name: \"my-app\" });\n * install(bunyanLogger, {\n * category: {\n * position: \"start\",\n * decorator: \"[]\",\n * separator: \".\"\n * }\n * });\n * ```\n *\n * @param logger The Bunyan logger instance to forward logs to.\n * @param options Configuration options for the sink adapter.\n * @since 2.1.0\n */\nexport function install(\n logger: BunyanLogger,\n options: BunyanSinkOptions = {},\n): void {\n configureSync({\n sinks: {\n bunyan: getBunyanSink(logger, options),\n },\n loggers: [\n {\n category: [\"logtape\", \"meta\"],\n sinks: [\"bunyan\"],\n lowestLevel: \"warning\",\n },\n { category: [], sinks: [\"bunyan\"] },\n ],\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mod.js","names":["value: unknown","parts: readonly (string | unknown)[]","valueFormatter: (value: unknown) => string","category: string","decorator: Required<CategoryOptions>[\"decorator\"]","logger: BunyanLogger","options: BunyanSinkOptions","categoryOptions: CategoryOptions | undefined","category: Required<CategoryOptions> | undefined","record: LogRecord"],"sources":["../src/mod.ts"],"sourcesContent":["import { configureSync, type LogRecord, type Sink } from \"@logtape/logtape\";\nimport { inspect } from \"node:util\";\n\n/**\n * A structural representation of a [Bunyan] logger sufficient for the\n * adapter's needs. Avoids importing Bunyan's own type definitions so the\n * package builds cleanly under both Deno and Node.js.\n *\n * [Bunyan]: https://github.com/trentm/node-bunyan\n *\n * @since 2.1.0\n */\nexport interface BunyanLogger {\n trace(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n debug(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n info(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n warn(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n error(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n fatal(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n}\n\n/**\n * Options for configuring the Bunyan sink adapter.\n * @since 2.1.0\n */\nexport interface BunyanSinkOptions {\n /**\n * Configuration for how LogTape categories are handled in Bunyan logs.\n * - `false` or `undefined`: Categories are not included in the log message\n * - `true`: Categories are included with default formatting\n * - `CategoryOptions`: Custom category formatting configuration\n */\n readonly category?: boolean | CategoryOptions;\n\n /**\n * A function that converts an interpolated value in the message template\n * to a string. By default, values are formatted with\n * `node:util#inspect()` using `breakLength: Infinity` so each value\n * appears on a single line in the rendered `msg` field.\n *\n * Supply a custom formatter to use, for example, `JSON.stringify`,\n * a redaction-aware serializer, or any other strategy.\n * @default `(value) => inspect(value, { breakLength: Infinity })`\n */\n readonly valueFormatter?: (value: unknown) => string;\n}\n\n/**\n * Configuration options for formatting LogTape categories in Bunyan log\n * messages.\n * @since 2.1.0\n */\nexport interface CategoryOptions {\n /**\n * The separator used to join category parts when multiple categories exist.\n * @default \"·\"\n */\n readonly separator?: string;\n\n /**\n * Where to position the category in the log message.\n * - `\"start\"`: Category appears at the beginning of the message\n * - `\"end\"`: Category appears at the end of the message\n * @default \"start\"\n */\n readonly position?: \"start\" | \"end\";\n\n /**\n * The decorator used to format the category in the log message.\n * - `\"[]\"`: [category] format\n * - `\"()\"`: (category) format\n * - `\"<>\"`: <category> format\n * - `\"{}\"`: {category} format\n * - `\":\"`: category: format\n * - `\"-\"`: category - format\n * - `\"|\"`: category | format\n * - `\"/\"`: category / format\n * - `\"\"`: category format (no decoration)\n * @default \":\"\n */\n readonly decorator?: \"[]\" | \"()\" | \"<>\" | \"{}\" | \":\" | \"-\" | \"|\" | \"/\" | \"\";\n}\n\nfunction defaultValueFormatter(value: unknown): string {\n return inspect(value, { breakLength: Infinity });\n}\n\nfunction renderMessage(\n parts: readonly (string | unknown)[],\n valueFormatter: (value: unknown) => string,\n): string {\n let rendered = \"\";\n for (let i = 0; i < parts.length; i++) {\n if (i % 2 === 0) {\n rendered += parts[i] as string;\n } else {\n rendered += valueFormatter(parts[i]);\n }\n }\n return rendered;\n}\n\nfunction decorateCategoryStart(\n category: string,\n decorator: Required<CategoryOptions>[\"decorator\"],\n): string {\n switch (decorator) {\n case \"[]\":\n return `[${category}] `;\n case \"()\":\n return `(${category}) `;\n case \"<>\":\n return `<${category}> `;\n case \"{}\":\n return `{${category}} `;\n case \":\":\n return `${category}: `;\n case \"-\":\n return `${category} - `;\n case \"|\":\n return `${category} | `;\n case \"/\":\n return `${category} / `;\n case \"\":\n return `${category} `;\n }\n}\n\nfunction decorateCategoryEnd(\n category: string,\n decorator: Required<CategoryOptions>[\"decorator\"],\n): string {\n switch (decorator) {\n case \"[]\":\n return ` [${category}]`;\n case \"()\":\n return ` (${category})`;\n case \"<>\":\n return ` <${category}>`;\n case \"{}\":\n return ` {${category}}`;\n case \":\":\n return `: ${category}`;\n case \"-\":\n return ` - ${category}`;\n case \"|\":\n return ` | ${category}`;\n case \"/\":\n return ` / ${category}`;\n case \"\":\n return ` ${category}`;\n }\n}\n\n/**\n * Creates a LogTape sink that forwards log records to a Bunyan logger.\n *\n * Bunyan does not provide a global default logger; you must create one\n * with `bunyan.createLogger({ name: \"...\" })` and pass it in.\n *\n * LogTape's `record.properties` are passed to Bunyan as the merge-object,\n * so any `serializers` configured on the Bunyan logger apply automatically.\n * The adapter also sets the merge-object's `time` field to a `Date`\n * derived from `record.timestamp`, so the resulting Bunyan record reflects\n * when LogTape created the record rather than when the sink call ran.\n *\n * Bunyan's other reserved fields (`name`, `hostname`, `pid`, `level`,\n * `msg`, `src`, `v`) should not be used as property keys.\n *\n * @example\n * ```typescript\n * import { configure } from \"@logtape/logtape\";\n * import { getBunyanSink } from \"@logtape/adaptor-bunyan\";\n * import bunyan from \"bunyan\";\n *\n * const bunyanLogger = bunyan.createLogger({ name: \"my-app\" });\n *\n * await configure({\n * sinks: {\n * bunyan: getBunyanSink(bunyanLogger, {\n * category: {\n * position: \"start\",\n * decorator: \"[]\",\n * separator: \".\"\n * }\n * })\n * },\n * loggers: [\n * { category: \"my-library\", sinks: [\"bunyan\"] }\n * ]\n * });\n * ```\n *\n * @param logger The Bunyan logger instance to forward logs to.\n * @param options Configuration options for the sink adapter.\n * @returns A LogTape sink function that can be used in LogTape configuration.\n * @since 2.1.0\n */\nexport function getBunyanSink(\n logger: BunyanLogger,\n options: BunyanSinkOptions = {},\n): Sink {\n const categoryOptions: CategoryOptions | undefined = !options.category\n ? undefined\n : typeof options.category === \"object\"\n ? options.category\n : {};\n const category: Required<CategoryOptions> | undefined =\n categoryOptions === undefined ? undefined : {\n separator: categoryOptions.separator ?? \"·\",\n position: categoryOptions.position ?? \"start\",\n decorator: categoryOptions.decorator ?? \":\",\n };\n const valueFormatter = options.valueFormatter ?? defaultValueFormatter;\n return (record: LogRecord) => {\n let message = renderMessage(record.message, valueFormatter);\n if (category !== undefined && record.category.length > 0) {\n const joined = record.category.join(category.separator);\n if (category.position === \"start\") {\n message = decorateCategoryStart(joined, category.decorator) + message;\n } else {\n message = message + decorateCategoryEnd(joined, category.decorator);\n }\n }\n const properties = {\n ...record.properties,\n time: new Date(record.timestamp),\n };\n switch (record.level) {\n case \"trace\":\n logger.trace(properties, message);\n return;\n case \"debug\":\n logger.debug(properties, message);\n return;\n case \"info\":\n logger.info(properties, message);\n return;\n case \"warning\":\n logger.warn(properties, message);\n return;\n case \"error\":\n logger.error(properties, message);\n return;\n case \"fatal\":\n logger.fatal(properties, message);\n return;\n }\n };\n}\n\n/**\n * Automatically configures LogTape to route all logs to a Bunyan logger.\n *\n * This is a convenience function that wires up `getBunyanSink()` as\n * LogTape's catch-all sink and routes the meta logger\n * (`[\"logtape\", \"meta\"]`) to the same sink with `lowestLevel: \"warning\"`,\n * matching the conventions of the other adapter packages.\n *\n * Bunyan does not provide a global default logger, so the logger argument\n * is required. Create one with `bunyan.createLogger({ name: \"...\" })`\n * and pass it in.\n *\n * @example Basic auto-configuration\n * ```typescript\n * import bunyan from \"bunyan\";\n * import { install } from \"@logtape/adaptor-bunyan\";\n *\n * const bunyanLogger = bunyan.createLogger({ name: \"my-app\" });\n * install(bunyanLogger);\n *\n * import { getLogger } from \"@logtape/logtape\";\n * const logger = getLogger(\"my-app\");\n * logger.info(\"This will be logged through Bunyan\");\n * ```\n *\n * @example Auto-configuration with custom options\n * ```typescript\n * import bunyan from \"bunyan\";\n * import { install } from \"@logtape/adaptor-bunyan\";\n *\n * const bunyanLogger = bunyan.createLogger({ name: \"my-app\" });\n * install(bunyanLogger, {\n * category: {\n * position: \"start\",\n * decorator: \"[]\",\n * separator: \".\"\n * }\n * });\n * ```\n *\n * @param logger The Bunyan logger instance to forward logs to.\n * @param options Configuration options for the sink adapter.\n * @since 2.1.0\n */\nexport function install(\n logger: BunyanLogger,\n options: BunyanSinkOptions = {},\n): void {\n configureSync({\n sinks: {\n bunyan: getBunyanSink(logger, options),\n },\n loggers: [\n {\n category: [\"logtape\", \"meta\"],\n sinks: [\"bunyan\"],\n lowestLevel: \"warning\",\n },\n { category: [], sinks: [\"bunyan\"] },\n ],\n });\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@logtape/adaptor-bunyan",
|
|
3
|
-
"version": "2.1.0-dev.
|
|
3
|
+
"version": "2.1.0-dev.540+76fbcbe2",
|
|
4
4
|
"description": "Bunyan adapter for LogTape logging library",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"logging",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
],
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"bunyan": "^1.8.0",
|
|
53
|
-
"@logtape/logtape": "^2.1.0"
|
|
53
|
+
"@logtape/logtape": "^2.1.0-dev.540+76fbcbe2"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@alinea/suite": "^0.6.3",
|