727
728
createLogger(idOrResource: URI | string, options?: ILoggerOptions): ILogger {
729
>
const resource = this.toResource(idOrResource);
log.ts
730
>
const id = isString(idOrResource) ? idOrResource : (options?.id ?? hash(resource.toString()).toString(16));
731
>
let logger = this._loggers.get(resource)?.logger;
732
>
const logLevel = options?.logLevel === 'always' ? LogLevel.Trace : options?.logLevel;
733
>
if (!logger) {
734
>
logger = this.doCreateLogger(resource, logLevel ?? this.getLogLevel(resource) ?? this.logLevel, { ...options, id });
735
>
}
736
>
const loggerEntry: LoggerEntry = {
737
>
logger,
738
>
info: {
739
>
resource,
740
>
id,
741
>
logLevel,
742
>
name: options?.name,
743
>
hidden: options?.hidden,
744
>
group: options?.group,
745
>
extensionId: options?.extensionId,
746
>
when: options?.when
747
>
}
748
>
};
749
>
this.registerLogger(loggerEntry.info);
750
>
// TODO: @sandy081 Remove this once registerLogger can take ILogger
751
>
this._loggers.set(resource, loggerEntry);
752
>
return logger;
753
>
}
754
755
protected toResource(idOrResource: string | URI): URI {
756
>
return isString(idOrResource) ? joinPath(this.logsHome, `${idOrResource.replace(/[\\/:\*\?"<>\|]/g, '')}.log`) : idOrResource;
log.ts
757
>
}
758
759
setLogLevel(logLevel: LogLevel): void;