mirror of
https://github.com/ckaczor/vscode-gitlens.git
synced 2026-01-15 01:25:42 -05:00
75 lines
2.1 KiB
TypeScript
75 lines
2.1 KiB
TypeScript
'use strict';
|
|
import { ExtensionContext, OutputChannel, window, workspace } from 'vscode';
|
|
import { IConfig } from './configuration';
|
|
import { ExtensionKey, ExtensionOutputChannelName } from './constants';
|
|
import { Telemetry } from './telemetry';
|
|
|
|
const ConsolePrefix = `[${ExtensionOutputChannelName}]`;
|
|
|
|
export type OutputLevel = 'silent' | 'errors' | 'verbose';
|
|
export const OutputLevel = {
|
|
Silent: 'silent' as OutputLevel,
|
|
Errors: 'errors' as OutputLevel,
|
|
Verbose: 'verbose' as OutputLevel
|
|
};
|
|
|
|
let debug = false;
|
|
let level: OutputLevel = OutputLevel.Silent;
|
|
let output: OutputChannel;
|
|
|
|
function onConfigurationChanged() {
|
|
const cfg = workspace.getConfiguration().get<IConfig>(ExtensionKey);
|
|
if (cfg === undefined) return;
|
|
|
|
if (cfg.debug !== debug || cfg.outputLevel !== level) {
|
|
debug = cfg.debug;
|
|
level = cfg.outputLevel;
|
|
|
|
if (level === OutputLevel.Silent) {
|
|
output && output.dispose();
|
|
}
|
|
else {
|
|
output = output || window.createOutputChannel(ExtensionOutputChannelName);
|
|
}
|
|
}
|
|
}
|
|
|
|
export class Logger {
|
|
|
|
static configure(context: ExtensionContext) {
|
|
context.subscriptions.push(workspace.onDidChangeConfiguration(onConfigurationChanged));
|
|
onConfigurationChanged();
|
|
}
|
|
|
|
static log(message?: any, ...params: any[]): void {
|
|
if (debug) {
|
|
console.log(ConsolePrefix, message, ...params);
|
|
}
|
|
|
|
if (level === OutputLevel.Verbose) {
|
|
output.appendLine([message, ...params].join(' '));
|
|
}
|
|
}
|
|
|
|
static error(ex: Error, classOrMethod?: string, ...params: any[]): void {
|
|
if (debug) {
|
|
console.error(ConsolePrefix, classOrMethod, ex, ...params);
|
|
}
|
|
|
|
if (level !== OutputLevel.Silent) {
|
|
output.appendLine([classOrMethod, ex, ...params].join(' '));
|
|
}
|
|
|
|
Telemetry.trackException(ex);
|
|
}
|
|
|
|
static warn(message?: any, ...params: any[]): void {
|
|
if (debug) {
|
|
console.warn(ConsolePrefix, message, ...params);
|
|
}
|
|
|
|
if (level !== OutputLevel.Silent) {
|
|
output.appendLine([message, ...params].join(' '));
|
|
}
|
|
}
|
|
} |