Add log level and log via connection

This commit is contained in:
Christopher Schleiden
2022-12-05 10:05:41 -08:00
parent 7f3ed8c66a
commit c1a8ba0ca7
5 changed files with 100 additions and 23 deletions
+3
View File
@@ -3,6 +3,7 @@ import {TemplateToken} from "@github/actions-workflow-parser/templates/tokens/te
import {File} from "@github/actions-workflow-parser/workflows/file";
import {Position, TextDocument} from "vscode-languageserver-textdocument";
import {Hover} from "vscode-languageserver-types";
import {info} from "./log";
import {nullTrace} from "./nulltrace";
import {findToken} from "./utils/find-token";
@@ -24,6 +25,8 @@ export async function hover(document: TextDocument, position: Position): Promise
function getHover(token: TemplateToken): Hover | null {
if (token.definition) {
info(`Calculation hover for token with definition ${token.definition.key}`);
let description = "";
if (token.description) {
description = token.description;
+1
View File
@@ -1,5 +1,6 @@
export {complete} from "./complete";
export {ContextProviderConfig} from "./context-providers/config";
export {hover} from "./hover";
export {Logger, LogLevel, registerLogger, setLogLevel} from "./log";
export {validate} from "./validate";
export {ValueProviderConfig, ValueProviderKind} from "./value-providers/config";
+80
View File
@@ -0,0 +1,80 @@
export enum LogLevel {
Debug = 0,
Info = 1,
Warn = 2,
Error = 3
}
const loggers: Logger[] = [];
let logLevel = LogLevel.Warn;
export interface Logger {
/**
* Show an error message.
*
* @param message The message to show.
*/
error(message: string): void;
/**
* Show a warning message.
*
* @param message The message to show.
*/
warn(message: string): void;
/**
* Show an information message.
*
* @param message The message to show.
*/
info(message: string): void;
/**
* Log a message.
*
* @param message The message to log.
*/
log(message: string): void;
}
export function registerLogger(l: Logger) {
loggers.push(l);
}
export function setLogLevel(ll: LogLevel) {
logLevel = ll;
}
export function info(message: string): void {
if (logLevel > LogLevel.Info) {
return;
}
for (const l of loggers) {
l.info(message);
}
}
export function warn(message: string): void {
if (logLevel > LogLevel.Warn) {
return;
}
for (const l of loggers) {
l.warn(message);
}
}
export function error(message: string): void {
if (logLevel > LogLevel.Error) {
return;
}
for (const l of loggers) {
l.error(message);
}
}
export function log(message: string): void {
for (const l of loggers) {
l.log(message);
}
}