microsoft/vscode-react-native

Public

mirrored from https://github.com/microsoft/vscode-react-nativeAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
a9d77c8b0667ef4b6618231d585f8465dae8b0df

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

src/common/log/loggers.ts

74lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT license. See LICENSE file in the project root for details.
3
4/**
5 * Formatter for the Output channel.
6 */
7import {LogHelper, LogLevel} from "./logHelper";
8
9export interface ILogger {
10 logMessage: (message: string, formatMessage?: boolean) => void;
11 logError: (errorMessage: string, error?: any, logStack?: boolean) => void;
12 logInternalMessage?: (logLevel: LogLevel, message: string) => void;
13}
14
15export class ConsoleLogger implements ILogger {
16 public logMessage(message: string, formatMessage: boolean = true ) {
17 console.log(formatMessage ?
18 this.getFormattedMessage(message) :
19 message);
20 }
21
22 public logError(errorMessage: string, error?: any, logStack: boolean = true) {
23 console.error(this.getFormattedMessage(errorMessage));
24
25 // Print the error stack if necessary
26 if (logStack && error && (<Error>error).stack) {
27 console.error(`Stack: ${(<Error>error).stack}`);
28 }
29 }
30
31 public logInternalMessage(logLevel: LogLevel, message: string) {
32 this.logMessage(this.getFormattedInternalMessage(logLevel, message), /* formatMessage */ false);
33 }
34
35 private getFormattedMessage(message: string) {
36 return `${LogHelper.MESSAGE_TAG} ${message}\n`;
37 }
38
39 private getFormattedInternalMessage(logLevel: LogLevel, message: string) {
40 return (`${LogHelper.INTERNAL_TAG} [${LogLevel[logLevel]}] ${message}\n`);
41 }
42}
43
44export class StreamLogger implements ILogger {
45 private stream: NodeJS.WritableStream;
46 constructor(stream: NodeJS.WritableStream) {
47 this.stream = stream;
48 }
49 public logMessage(message: string, formatMessage: boolean = true ) {
50 this.stream.write(formatMessage ?
51 this.getFormattedMessage(message) :
52 message);
53 }
54
55 public logError(errorMessage: string, error?: any, logStack: boolean = true) {
56 this.logMessage(errorMessage);
57
58 if (logStack && error && (<Error>error).stack) {
59 this.logMessage(`Stack: ${(<Error>error).stack}`, /* formatMessage */ false);
60 }
61 }
62
63 public logInternalMessage(logLevel: LogLevel, message: string) {
64 this.logMessage(this.getFormattedInternalMessage(logLevel, message), /* formatMessage */ false);
65 }
66
67 public getFormattedMessage(message: string) {
68 return `${LogHelper.MESSAGE_TAG} ${message}\n`;
69 }
70
71 public getFormattedInternalMessage(logLevel: LogLevel, message: string) {
72 return (`${LogHelper.INTERNAL_TAG} [${logLevel}] ${message}\n`);
73 }
74}