Skip to content

Commit a33d692

Browse files
code-asherkylecarbs
authored andcommitted
Add log level to logger
This is mostly so I can avoid the request logging which pushes out other logs pretty fast.
1 parent 36a2d26 commit a33d692

2 files changed

Lines changed: 59 additions & 30 deletions

File tree

packages/logger/src/logger.ts

Lines changed: 46 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
/**
2+
* Log level.
3+
*/
4+
export enum Level {
5+
Debug = 0,
6+
Info = 1,
7+
Warn = 2,
8+
Error = 3,
9+
}
10+
111
/**
212
* A field to log.
313
*/
@@ -221,12 +231,12 @@ export class ServerFormatter extends Formatter {
221231

222232
public fields(fields: Array<Field<any>>): void {
223233
const obj = {} as any;
224-
this.format += "\u001B[38;2;140;140;140m"
234+
this.format += "\u001B[38;2;140;140;140m";
225235
fields.forEach((field) => {
226236
obj[field.identifier] = field.value;
227237
});
228238
this.args.push(JSON.stringify(obj));
229-
console.log(...this.flush());
239+
console.log(...this.flush()); // tslint:disable-line no-console
230240
}
231241

232242
}
@@ -236,6 +246,8 @@ export class ServerFormatter extends Formatter {
236246
*/
237247
export class Logger {
238248

249+
public level = Level.Debug;
250+
239251
private readonly nameColor?: string;
240252
private muted: boolean;
241253

@@ -265,48 +277,56 @@ export class Logger {
265277
* Outputs information.
266278
*/
267279
public info(msg: string, ...fields: FieldArray): void {
268-
this.handle({
269-
type: "info",
270-
message: msg,
271-
fields,
272-
tagColor: "#008FBF",
273-
});
280+
if (this.level <= Level.Info) {
281+
this.handle({
282+
type: "info",
283+
message: msg,
284+
fields,
285+
tagColor: "#008FBF",
286+
});
287+
}
274288
}
275289

276290
/**
277291
* Outputs a warning.
278292
*/
279293
public warn(msg: string, ...fields: FieldArray): void {
280-
this.handle({
281-
type: "warn",
282-
message: msg,
283-
fields,
284-
tagColor: "#FF9D00",
285-
});
294+
if (this.level <= Level.Warn) {
295+
this.handle({
296+
type: "warn",
297+
message: msg,
298+
fields,
299+
tagColor: "#FF9D00",
300+
});
301+
}
286302
}
287303

288304
/**
289305
* Outputs a debug message.
290306
*/
291307
public debug(msg: string, ...fields: FieldArray): void {
292-
this.handle({
293-
type: "debug",
294-
message: msg,
295-
fields,
296-
tagColor: "#84009E",
297-
});
308+
if (this.level <= Level.Debug) {
309+
this.handle({
310+
type: "debug",
311+
message: msg,
312+
fields,
313+
tagColor: "#84009E",
314+
});
315+
}
298316
}
299317

300318
/**
301319
* Outputs an error.
302320
*/
303321
public error(msg: string, ...fields: FieldArray): void {
304-
this.handle({
305-
type: "error",
306-
message: msg,
307-
fields,
308-
tagColor: "#B00000",
309-
});
322+
if (this.level <= Level.Error) {
323+
this.handle({
324+
type: "error",
325+
message: msg,
326+
fields,
327+
tagColor: "#B00000",
328+
});
329+
}
310330
}
311331

312332
/**

packages/server/src/cli.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { field, logger } from "@coder/logger";
1+
import { field, logger, Level } from "@coder/logger";
22
import { ServerMessage, SharedProcessActiveMessage } from "@coder/protocol/src/proto";
33
import { Command, flags } from "@oclif/command";
44
import * as fs from "fs";
@@ -20,6 +20,7 @@ export class Entry extends Command {
2020
host: flags.string({ char: "h", default: "0.0.0.0" }),
2121
open: flags.boolean({ char: "o", description: "Open in browser on startup" }),
2222
port: flags.integer({ char: "p", default: 8080, description: "Port to bind on" }),
23+
logLevel: flags.enum({ char: "l", options: [ "debug", "info", "warn", "error" ]}),
2324
version: flags.version({ char: "v" }),
2425

2526
// Dev flags
@@ -50,15 +51,23 @@ export class Entry extends Command {
5051

5152
const { args, flags } = this.parse(Entry);
5253

54+
if (flags.logLevel) {
55+
switch (flags.logLevel) {
56+
case "debug": logger.level = Level.Debug; break;
57+
case "info": logger.level = Level.Info; break;
58+
case "warn": logger.level = Level.Warn; break;
59+
case "error": logger.level = Level.Error; break;
60+
}
61+
}
62+
5363
if (flags["bootstrap-fork"]) {
5464
const modulePath = flags["bootstrap-fork"];
5565
if (!modulePath) {
5666
logger.error("No module path specified to fork!");
5767
process.exit(1);
5868
}
5969

60-
requireModule(modulePath);
61-
return;
70+
return requireModule(modulePath);
6271
}
6372

6473
const dataDir = flags["data-dir"] || path.join(os.homedir(), ".vscode-online");
@@ -70,7 +79,7 @@ export class Entry extends Command {
7079
logger.info("Initializing", field("data-dir", dataDir), field("working-dir", workingDir));
7180
const sharedProcess = new SharedProcess(dataDir);
7281
logger.info("Starting shared process...", field("socket", sharedProcess.socketPath));
73-
const sendSharedProcessReady = (socket: WebSocket) => {
82+
const sendSharedProcessReady = (socket: WebSocket): void => {
7483
const active = new SharedProcessActiveMessage();
7584
active.setSocketPath(sharedProcess.socketPath);
7685
const serverMessage = new ServerMessage();

0 commit comments

Comments
 (0)