Skip to content

Commit 8bf36c3

Browse files
committed
Revert "refactor: remove Extender and google-cloud"
This reverts commit 8758df9.
1 parent ac32698 commit 8bf36c3

File tree

3 files changed

+71
-1
lines changed

3 files changed

+71
-1
lines changed

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@
1111
"types": "out/index.d.ts",
1212
"author": "Coder",
1313
"license": "MIT",
14+
"peerDependencies": {
15+
"@google-cloud/logging": "^9.2.1"
16+
},
1417
"devDependencies": {
18+
"@google-cloud/logging": "^9.2.1",
1519
"@types/mocha": "^8.2.2",
1620
"@types/node": "^12.6.8",
1721
"@typescript-eslint/eslint-plugin": "^4.22.0",

src/extender.ts

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import * as gcl from "@google-cloud/logging"
2+
import { Extender, field, Level, logger } from "./logger"
3+
4+
export const createStackdriverExtender = (projectId: string, logId: string): Extender => {
5+
const logging = new gcl.Logging({
6+
autoRetry: true,
7+
projectId,
8+
})
9+
10+
const log = logging.log(logId)
11+
const convertSeverity = (severity: Level): gcl.protos.google.logging.type.LogSeverity => {
12+
switch (severity) {
13+
case Level.Trace:
14+
case Level.Debug:
15+
return gcl.protos.google.logging.type.LogSeverity.DEBUG
16+
case Level.Info:
17+
return gcl.protos.google.logging.type.LogSeverity.INFO
18+
case Level.Warn:
19+
return gcl.protos.google.logging.type.LogSeverity.WARNING
20+
case Level.Error:
21+
return gcl.protos.google.logging.type.LogSeverity.ERROR
22+
}
23+
}
24+
25+
return (options): void => {
26+
const severity = convertSeverity(options.level)
27+
const metadata: { [id: string]: string } = {}
28+
if (options.fields) {
29+
options.fields.forEach((f) => {
30+
if (!f) {
31+
return
32+
}
33+
metadata[f.identifier] = f.value
34+
})
35+
}
36+
37+
const entry = log.entry(
38+
{ severity },
39+
{
40+
...metadata,
41+
message: options.message,
42+
},
43+
)
44+
45+
log.write(entry).catch((ex: Error) => {
46+
logger.named("GCP").error("Failed to log", field("error", ex))
47+
})
48+
}
49+
}

src/logger.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,11 @@ export type Message = {
7272
tagColor: string
7373
}
7474

75+
/**
76+
* An extra function to call with a message.
77+
*/
78+
export type Extender = (msg: Message & { section?: string }) => void
79+
7580
/**
7681
* Represents a message formatted for use with something like `console.log`.
7782
*/
@@ -303,6 +308,7 @@ export class Logger {
303308
private _formatter: Formatter,
304309
private readonly name?: string,
305310
private readonly defaultFields?: FieldArray,
311+
private readonly extenders: Extender[] = [],
306312
) {
307313
if (name) {
308314
this.nameColor = this.hashStringToColor(name)
@@ -339,6 +345,10 @@ export class Logger {
339345
this.muted = true
340346
}
341347

348+
public extend(extender: Extender): void {
349+
this.extenders.push(extender)
350+
}
351+
342352
public info(fn: LogCallback): void
343353
public info(message: string, ...fields: FieldArray): void
344354
public info(message: LogCallback | string, ...fields: FieldArray): void {
@@ -399,7 +409,7 @@ export class Logger {
399409
* Each name is deterministically generated a color.
400410
*/
401411
public named(name: string, ...fields: FieldArray): Logger {
402-
const l = new Logger(this._formatter, name, fields)
412+
const l = new Logger(this._formatter, name, fields, this.extenders)
403413
if (this.muted) {
404414
l.mute()
405415
}
@@ -452,6 +462,13 @@ export class Logger {
452462
}
453463

454464
this._formatter.write(message.level)
465+
466+
this.extenders.forEach((extender) => {
467+
extender({
468+
section: this.name,
469+
...message,
470+
})
471+
})
455472
}
456473

457474
/**

0 commit comments

Comments
 (0)