src/vs/workbench/contrib/logs/common/logsActions.ts/SetLogLevelAction/selectLogLevelOrChannel
class SetLogLevelAction:	private async selectLogLevelOrChannel(): Promise<IOutputChannelDescriptor | LogLevel | null> {
		const extensionLogs = [], logs = [];
		for (const channel of this.outputService.getChannelDescriptors()) {
			if (!channel.log || channel.id === telemetryLogChannelId || channel.id === extensionTelemetryLogChannelId) {
				continue;
			}
			if (channel.extensionId) {
				extensionLogs.push(channel);
			} else {
				logs.push(channel);
			}
		}
		const entries: (LogLevelQuickPickItem | LogChannelQuickPickItem | IQuickPickSeparator)[] = [];
		entries.push({ type: 'separator', label: nls.localize('all', "All") });
		entries.push(...this.getLogLevelEntries(this.getDefaultLogLevel(null), this.logService.getLevel()));
		entries.push({ type: 'separator', label: nls.localize('loggers', "Logs") });
		const logLevel = this.logService.getLevel();
		for (const channel of logs.sort((a, b) => a.label.localeCompare(b.label))) {
			const channelLogLevel = this.logLevelService.getLogLevel(channel.id) ?? logLevel;
			entries.push({ label: channel.label, channel, description: channelLogLevel !== logLevel ? this.getLabel(channelLogLevel) : undefined });
		}
		if (extensionLogs.length && logs.length) {
			entries.push({ type: 'separator', label: nls.localize('extensionLogs', "Extension Logs") });
		}
		for (const channel of extensionLogs.sort((a, b) => a.label.localeCompare(b.label))) {
			const channelLogLevel = this.logLevelService.getLogLevel(channel.id) ?? logLevel;
			entries.push({ label: channel.label, channel, description: channelLogLevel !== logLevel ? this.getLabel(channelLogLevel) : undefined });
		}
		const entry = await this.quickInputService.pick(entries, { placeHolder: nls.localize('selectlog', "Set Log Level") });
		if (entry) {
			if ((<LogLevelQuickPickItem>entry).level) {
				return (<LogLevelQuickPickItem>entry).level;
			}
			if ((<LogChannelQuickPickItem>entry).channel) {
				return (<LogChannelQuickPickItem>entry).channel;
			}
		}
		return null;
	}