@sussudio/platform
Version:
Internal APIs for VS Code's service injection the base services.
205 lines (203 loc) • 7.81 kB
text/typescript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Event } from '@sussudio/base/common/event.mjs';
import { Disposable, IDisposable } from '@sussudio/base/common/lifecycle.mjs';
import { URI } from '@sussudio/base/common/uri.mjs';
import { IEnvironmentService } from '../../environment/common/environment.mjs';
export declare const ILogService: import('../../instantiation/common/instantiation.mjs').ServiceIdentifier<ILogService>;
export declare const ILoggerService: import('../../instantiation/common/instantiation.mjs').ServiceIdentifier<ILoggerService>;
export declare enum LogLevel {
Off = 0,
Trace = 1,
Debug = 2,
Info = 3,
Warning = 4,
Error = 5,
}
export declare const DEFAULT_LOG_LEVEL: LogLevel;
export interface ILogger extends IDisposable {
onDidChangeLogLevel: Event<LogLevel>;
getLevel(): LogLevel;
setLevel(level: LogLevel): void;
trace(message: string, ...args: any[]): void;
debug(message: string, ...args: any[]): void;
info(message: string, ...args: any[]): void;
warn(message: string, ...args: any[]): void;
error(message: string | Error, ...args: any[]): void;
/**
* An operation to flush the contents. Can be synchronous.
*/
flush(): void;
}
export declare function log(logger: ILogger, level: LogLevel, message: string): void;
export declare function format(args: any): string;
export interface ILogService extends ILogger {
readonly _serviceBrand: undefined;
}
export interface ILoggerOptions {
/**
* Name of the logger.
*/
name?: string;
/**
* Do not create rotating files if max size exceeds.
*/
donotRotate?: boolean;
/**
* Do not use formatters.
*/
donotUseFormatters?: boolean;
/**
* If set, logger logs the message always.
*/
always?: boolean;
}
export interface ILoggerService {
readonly _serviceBrand: undefined;
/**
* Creates a logger, or gets one if it already exists.
*/
createLogger(resource: URI, options?: ILoggerOptions, logLevel?: LogLevel): ILogger;
/**
* Gets an existing logger, if any.
*/
getLogger(resource: URI): ILogger | undefined;
/**
* Set log level for a logger.
*/
setLevel(resource: URI, level: LogLevel | undefined): void;
/**
* Get log level for a logger.
*/
getLogLevel(resource: URI): LogLevel | undefined;
}
export declare abstract class AbstractLogger extends Disposable implements ILogger {
private level;
private readonly _onDidChangeLogLevel;
readonly onDidChangeLogLevel: Event<LogLevel>;
setLevel(level: LogLevel): void;
getLevel(): LogLevel;
protected checkLogLevel(level: LogLevel): boolean;
abstract trace(message: string, ...args: any[]): void;
abstract debug(message: string, ...args: any[]): void;
abstract info(message: string, ...args: any[]): void;
abstract warn(message: string, ...args: any[]): void;
abstract error(message: string | Error, ...args: any[]): void;
abstract flush(): void;
}
export declare abstract class AbstractMessageLogger extends AbstractLogger implements ILogger {
private readonly logAlways?;
protected abstract log(level: LogLevel, message: string): void;
constructor(logAlways?: boolean | undefined);
protected checkLogLevel(level: LogLevel): boolean;
trace(message: string, ...args: any[]): void;
debug(message: string, ...args: any[]): void;
info(message: string, ...args: any[]): void;
warn(message: string, ...args: any[]): void;
error(message: string | Error, ...args: any[]): void;
flush(): void;
}
export declare class ConsoleMainLogger extends AbstractLogger implements ILogger {
private useColors;
constructor(logLevel?: LogLevel);
trace(message: string, ...args: any[]): void;
debug(message: string, ...args: any[]): void;
info(message: string, ...args: any[]): void;
warn(message: string | Error, ...args: any[]): void;
error(message: string, ...args: any[]): void;
dispose(): void;
flush(): void;
}
export declare class ConsoleLogger extends AbstractLogger implements ILogger {
constructor(logLevel?: LogLevel);
trace(message: string, ...args: any[]): void;
debug(message: string, ...args: any[]): void;
info(message: string, ...args: any[]): void;
warn(message: string | Error, ...args: any[]): void;
error(message: string, ...args: any[]): void;
dispose(): void;
flush(): void;
}
export declare class AdapterLogger extends AbstractLogger implements ILogger {
private readonly adapter;
constructor(
adapter: {
log: (logLevel: LogLevel, args: any[]) => void;
},
logLevel?: LogLevel,
);
trace(message: string, ...args: any[]): void;
debug(message: string, ...args: any[]): void;
info(message: string, ...args: any[]): void;
warn(message: string | Error, ...args: any[]): void;
error(message: string | Error, ...args: any[]): void;
private extractMessage;
dispose(): void;
flush(): void;
}
export declare class MultiplexLogService extends AbstractLogger implements ILogService {
private readonly logServices;
readonly _serviceBrand: undefined;
constructor(logServices: ReadonlyArray<ILogger>);
setLevel(level: LogLevel): void;
trace(message: string, ...args: any[]): void;
debug(message: string, ...args: any[]): void;
info(message: string, ...args: any[]): void;
warn(message: string, ...args: any[]): void;
error(message: string | Error, ...args: any[]): void;
flush(): void;
dispose(): void;
}
export declare class LogService extends Disposable implements ILogService {
private logger;
readonly _serviceBrand: undefined;
constructor(logger: ILogger);
get onDidChangeLogLevel(): Event<LogLevel>;
setLevel(level: LogLevel): void;
getLevel(): LogLevel;
trace(message: string, ...args: any[]): void;
debug(message: string, ...args: any[]): void;
info(message: string, ...args: any[]): void;
warn(message: string, ...args: any[]): void;
error(message: string | Error, ...args: any[]): void;
flush(): void;
}
export declare abstract class AbstractLoggerService extends Disposable implements ILoggerService {
private logLevel;
readonly _serviceBrand: undefined;
private readonly loggerItems;
constructor(logLevel: LogLevel, onDidChangeLogLevel: Event<LogLevel>);
getLoggers(): ILogger[];
getLogger(resource: URI): ILogger | undefined;
createLogger(resource: URI, options?: ILoggerOptions, logLevel?: LogLevel): ILogger;
setLevel(logLevel: LogLevel): void;
setLevel(resource: URI, logLevel: LogLevel): void;
getLogLevel(resource: URI): LogLevel | undefined;
dispose(): void;
protected abstract doCreateLogger(resource: URI, logLevel: LogLevel, options?: ILoggerOptions): ILogger;
}
export declare class NullLogger implements ILogger {
readonly onDidChangeLogLevel: Event<LogLevel>;
setLevel(level: LogLevel): void;
getLevel(): LogLevel;
trace(message: string, ...args: any[]): void;
debug(message: string, ...args: any[]): void;
info(message: string, ...args: any[]): void;
warn(message: string, ...args: any[]): void;
error(message: string | Error, ...args: any[]): void;
critical(message: string | Error, ...args: any[]): void;
dispose(): void;
flush(): void;
}
export declare class NullLogService extends NullLogger implements ILogService {
readonly _serviceBrand: undefined;
}
export declare class NullLoggerService extends AbstractLoggerService {
constructor();
protected doCreateLogger(resource: URI, logLevel: LogLevel, options?: ILoggerOptions | undefined): ILogger;
}
export declare function getLogLevel(environmentService: IEnvironmentService): LogLevel;
export declare function LogLevelToString(logLevel: LogLevel): string;
export declare function parseLogLevel(logLevel: string): LogLevel | undefined;