diff --git a/src/Aspire.Dashboard/Components/Controls/LogViewer.razor b/src/Aspire.Dashboard/Components/Controls/LogViewer.razor index 405a66cb369..2bc3915e7ba 100644 --- a/src/Aspire.Dashboard/Components/Controls/LogViewer.razor +++ b/src/Aspire.Dashboard/Components/Controls/LogViewer.razor @@ -10,7 +10,7 @@ @implements IAsyncDisposable
-
+
@if (LogEntries is { } logEntries) { diff --git a/src/Aspire.Dashboard/Components/Controls/LogViewer.razor.cs b/src/Aspire.Dashboard/Components/Controls/LogViewer.razor.cs index bddc9331902..10c81dd3968 100644 --- a/src/Aspire.Dashboard/Components/Controls/LogViewer.razor.cs +++ b/src/Aspire.Dashboard/Components/Controls/LogViewer.razor.cs @@ -39,6 +39,9 @@ public sealed partial class LogViewer [Parameter] public bool IsTimestampUtc { get; set; } + [Parameter] + public bool NoWrapLogs { get; set; } + [Parameter] public string? ApplicationName { get; set; } @@ -87,6 +90,11 @@ private string GetDisplayTimestamp(DateTimeOffset timestamp) : TimeProvider.ToLocal(timestamp).ToString(KnownFormats.ConsoleLogsUITimestampLocalFormat, CultureInfo.InvariantCulture); } + private string GetLogContainerClass() + { + return $"log-container console-container {(NoWrapLogs ? "wrap-log-container" : null)}"; + } + public ValueTask DisposeAsync() { Logger.LogDebug("Disposing log viewer."); diff --git a/src/Aspire.Dashboard/Components/Pages/ConsoleLogs.razor b/src/Aspire.Dashboard/Components/Pages/ConsoleLogs.razor index ac651645f01..dc556e6d64a 100644 --- a/src/Aspire.Dashboard/Components/Pages/ConsoleLogs.razor +++ b/src/Aspire.Dashboard/Components/Pages/ConsoleLogs.razor @@ -96,6 +96,7 @@ LogEntries="@_logEntries" ShowTimestamp="@_showTimestamp" IsTimestampUtc="@_isTimestampUtc" + NoWrapLogs="@_noWrapLogs" ApplicationName="@PageViewModel.SelectedResource?.Name"/> diff --git a/src/Aspire.Dashboard/Components/Pages/ConsoleLogs.razor.cs b/src/Aspire.Dashboard/Components/Pages/ConsoleLogs.razor.cs index 6c69026fd8c..8b46838ef37 100644 --- a/src/Aspire.Dashboard/Components/Pages/ConsoleLogs.razor.cs +++ b/src/Aspire.Dashboard/Components/Pages/ConsoleLogs.razor.cs @@ -118,6 +118,7 @@ private sealed class ConsoleLogsSubscription private bool _showHiddenResources; private bool _showTimestamp; private bool _isTimestampUtc; + private bool _noWrapLogs; public ConsoleLogsViewModel PageViewModel { get; set; } = null!; private IDisposable? _consoleLogsFiltersChangedSubscription; private ConsoleLogsFilters _consoleLogFilters = new(); @@ -149,6 +150,7 @@ protected override async Task OnInitializedAsync() { _showTimestamp = consoleSettings.ShowTimestamp; _isTimestampUtc = consoleSettings.IsTimestampUtc; + _noWrapLogs = consoleSettings.NoWrapLogs; } var showHiddenResources = await SessionStorage.GetAsync(BrowserStorageKeys.ResourcesShowHiddenResources); @@ -370,6 +372,13 @@ private void UpdateMenuButtons() IsDisabled = !_showTimestamp }); + _logsMenuItems.Add(new() + { + OnClick = () => ToggleWrapLogsAsync(noWrapLogs: !_noWrapLogs), + Text = _noWrapLogs ? Loc[nameof(Dashboard.Resources.ConsoleLogs.ConsoleLogsWrapLogs)] : Loc[nameof(Dashboard.Resources.ConsoleLogs.ConsoleLogsNoWrapLogs)], + Icon = _noWrapLogs ? new Icons.Regular.Size16.TextWrap() : new Icons.Regular.Size16.TextWrapOff() + }); + if (PageViewModel.SelectedResource != null) { if (ViewportInformation.IsDesktop) @@ -400,10 +409,20 @@ private void UpdateMenuButtons() private async Task ToggleTimestampAsync(bool showTimestamp, bool isTimestampUtc) { - await LocalStorage.SetUnprotectedAsync(BrowserStorageKeys.ConsoleLogConsoleSettings, new ConsoleLogConsoleSettings(showTimestamp, isTimestampUtc)); _showTimestamp = showTimestamp; _isTimestampUtc = isTimestampUtc; + await UpdateConsoleLogSettingsAsync(); + } + private async Task ToggleWrapLogsAsync(bool noWrapLogs) + { + _noWrapLogs = noWrapLogs; + await UpdateConsoleLogSettingsAsync(); + } + + private async Task UpdateConsoleLogSettingsAsync() + { + await LocalStorage.SetUnprotectedAsync(BrowserStorageKeys.ConsoleLogConsoleSettings, new ConsoleLogConsoleSettings(_showTimestamp, _isTimestampUtc, _noWrapLogs)); UpdateMenuButtons(); StateHasChanged(); } @@ -749,7 +768,7 @@ public class ConsoleLogsViewModel public record ConsoleLogsPageState(string? SelectedResource); - public record ConsoleLogConsoleSettings(bool ShowTimestamp, bool IsTimestampUtc); + public record ConsoleLogConsoleSettings(bool ShowTimestamp, bool IsTimestampUtc, bool NoWrapLogs); public Task UpdateViewModelFromQueryAsync(ConsoleLogsViewModel viewModel) { diff --git a/src/Aspire.Dashboard/Resources/ConsoleLogs.Designer.cs b/src/Aspire.Dashboard/Resources/ConsoleLogs.Designer.cs index 87010c770d8..8183a249984 100644 --- a/src/Aspire.Dashboard/Resources/ConsoleLogs.Designer.cs +++ b/src/Aspire.Dashboard/Resources/ConsoleLogs.Designer.cs @@ -1,7 +1,6 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -12,46 +11,32 @@ namespace Aspire.Dashboard.Resources { using System; - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] public class ConsoleLogs { - private static global::System.Resources.ResourceManager resourceMan; + private static System.Resources.ResourceManager resourceMan; - private static global::System.Globalization.CultureInfo resourceCulture; + private static System.Globalization.CultureInfo resourceCulture; - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal ConsoleLogs() { } - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - public static global::System.Resources.ResourceManager ResourceManager { + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + public static System.Resources.ResourceManager ResourceManager { get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Aspire.Dashboard.Resources.ConsoleLogs", typeof(ConsoleLogs).Assembly); + if (object.Equals(null, resourceMan)) { + System.Resources.ResourceManager temp = new System.Resources.ResourceManager("Aspire.Dashboard.Resources.ConsoleLogs", typeof(ConsoleLogs).Assembly); resourceMan = temp; } return resourceMan; } } - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - public static global::System.Globalization.CultureInfo Culture { + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + public static System.Globalization.CultureInfo Culture { get { return resourceCulture; } @@ -60,174 +45,129 @@ internal ConsoleLogs() { } } - /// - /// Looks up a localized string similar to Error watching logs. - /// - public static string ConsoleLogsErrorWatchingLogs { + public static string ConsoleLogsHeader { get { - return ResourceManager.GetString("ConsoleLogsErrorWatchingLogs", resourceCulture); + return ResourceManager.GetString("ConsoleLogsHeader", resourceCulture); } } - /// - /// Looks up a localized string similar to Finished watching logs. - /// - public static string ConsoleLogsFinishedWatchingLogs { + public static string ConsoleLogsSelectResourceToolbar { get { - return ResourceManager.GetString("ConsoleLogsFinishedWatchingLogs", resourceCulture); + return ResourceManager.GetString("ConsoleLogsSelectResourceToolbar", resourceCulture); } } - /// - /// Looks up a localized string similar to Console logs. - /// - public static string ConsoleLogsHeader { + public static string ConsoleLogsPageTitle { get { - return ResourceManager.GetString("ConsoleLogsHeader", resourceCulture); + return ResourceManager.GetString("ConsoleLogsPageTitle", resourceCulture); } } - /// - /// Looks up a localized string similar to Loading resources .... - /// - public static string ConsoleLogsLoadingResources { + public static string ConsoleLogsLogsNotYetAvailable { get { - return ResourceManager.GetString("ConsoleLogsLoadingResources", resourceCulture); + return ResourceManager.GetString("ConsoleLogsLogsNotYetAvailable", resourceCulture); } } - /// - /// Looks up a localized string similar to Logs not yet available. - /// - public static string ConsoleLogsLogsNotYetAvailable { + public static string ConsoleLogsWatchingLogs { get { - return ResourceManager.GetString("ConsoleLogsLogsNotYetAvailable", resourceCulture); + return ResourceManager.GetString("ConsoleLogsWatchingLogs", resourceCulture); } } - /// - /// Looks up a localized string similar to No resource selected. - /// - public static string ConsoleLogsNoResourceSelected { + public static string ConsoleLogsFinishedWatchingLogs { get { - return ResourceManager.GetString("ConsoleLogsNoResourceSelected", resourceCulture); + return ResourceManager.GetString("ConsoleLogsFinishedWatchingLogs", resourceCulture); } } - /// - /// Looks up a localized string similar to {0} console logs. - /// - public static string ConsoleLogsPageTitle { + public static string ConsoleLogsLoadingResources { get { - return ResourceManager.GetString("ConsoleLogsPageTitle", resourceCulture); + return ResourceManager.GetString("ConsoleLogsLoadingResources", resourceCulture); } } - /// - /// Looks up a localized string similar to <Log capture paused at {0}, {1} log(s) filtered out>. - /// - public static string ConsoleLogsPauseActive { + public static string ConsoleLogsNoResourceSelected { get { - return ResourceManager.GetString("ConsoleLogsPauseActive", resourceCulture); + return ResourceManager.GetString("ConsoleLogsNoResourceSelected", resourceCulture); } } - /// - /// Looks up a localized string similar to <Log capture paused between {0} and {1}, {2} log(s) filtered out>. - /// - public static string ConsoleLogsPauseDetails { + public static string ConsoleLogsUnknownState { get { - return ResourceManager.GetString("ConsoleLogsPauseDetails", resourceCulture); + return ResourceManager.GetString("ConsoleLogsUnknownState", resourceCulture); } } - /// - /// Looks up a localized string similar to Resource actions. - /// - public static string ConsoleLogsResourceActions { + public static string LogStatusLabel { get { - return ResourceManager.GetString("ConsoleLogsResourceActions", resourceCulture); + return ResourceManager.GetString("LogStatusLabel", resourceCulture); } } - /// - /// Looks up a localized string similar to Select resource. - /// - public static string ConsoleLogsSelectResourceToolbar { + public static string DownloadLogs { get { - return ResourceManager.GetString("ConsoleLogsSelectResourceToolbar", resourceCulture); + return ResourceManager.GetString("DownloadLogs", resourceCulture); } } - /// - /// Looks up a localized string similar to Console logs settings. - /// public static string ConsoleLogsSettings { get { return ResourceManager.GetString("ConsoleLogsSettings", resourceCulture); } } - /// - /// Looks up a localized string similar to Hide timestamps. - /// - public static string ConsoleLogsTimestampHide { + public static string ConsoleLogsResourceActions { get { - return ResourceManager.GetString("ConsoleLogsTimestampHide", resourceCulture); + return ResourceManager.GetString("ConsoleLogsResourceActions", resourceCulture); } } - /// - /// Looks up a localized string similar to Show timestamps. - /// public static string ConsoleLogsTimestampShow { get { return ResourceManager.GetString("ConsoleLogsTimestampShow", resourceCulture); } } - /// - /// Looks up a localized string similar to UTC timestamps. - /// + public static string ConsoleLogsTimestampHide { + get { + return ResourceManager.GetString("ConsoleLogsTimestampHide", resourceCulture); + } + } + public static string ConsoleLogsTimestampShowUtc { get { return ResourceManager.GetString("ConsoleLogsTimestampShowUtc", resourceCulture); } } - /// - /// Looks up a localized string similar to Unknown state. - /// - public static string ConsoleLogsUnknownState { + public static string ConsoleLogsPauseActive { get { - return ResourceManager.GetString("ConsoleLogsUnknownState", resourceCulture); + return ResourceManager.GetString("ConsoleLogsPauseActive", resourceCulture); } } - /// - /// Looks up a localized string similar to Watching logs.... - /// - public static string ConsoleLogsWatchingLogs { + public static string ConsoleLogsPauseDetails { get { - return ResourceManager.GetString("ConsoleLogsWatchingLogs", resourceCulture); + return ResourceManager.GetString("ConsoleLogsPauseDetails", resourceCulture); } } - /// - /// Looks up a localized string similar to Download logs. - /// - public static string DownloadLogs { + public static string ConsoleLogsErrorWatchingLogs { get { - return ResourceManager.GetString("DownloadLogs", resourceCulture); + return ResourceManager.GetString("ConsoleLogsErrorWatchingLogs", resourceCulture); } } - /// - /// Looks up a localized string similar to Service log status. - /// - public static string LogStatusLabel { + public static string ConsoleLogsWrapLogs { get { - return ResourceManager.GetString("LogStatusLabel", resourceCulture); + return ResourceManager.GetString("ConsoleLogsWrapLogs", resourceCulture); + } + } + + public static string ConsoleLogsNoWrapLogs { + get { + return ResourceManager.GetString("ConsoleLogsNoWrapLogs", resourceCulture); } } } diff --git a/src/Aspire.Dashboard/Resources/ConsoleLogs.resx b/src/Aspire.Dashboard/Resources/ConsoleLogs.resx index e2dac878faa..f11ede52b77 100644 --- a/src/Aspire.Dashboard/Resources/ConsoleLogs.resx +++ b/src/Aspire.Dashboard/Resources/ConsoleLogs.resx @@ -1,17 +1,17 @@ - @@ -177,4 +177,10 @@ Error watching logs - \ No newline at end of file + + Wrap log lines + + + Don't wrap log lines + + diff --git a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.cs.xlf b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.cs.xlf index 8093ae2322e..9df2c38043b 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.cs.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.cs.xlf @@ -32,6 +32,11 @@ Nevybrán žádný prostředek + + Don't wrap log lines + Don't wrap log lines + + {0} console logs Protokoly konzoly aplikace {0} @@ -87,6 +92,11 @@ Sledují se protokoly... + + Wrap log lines + Wrap log lines + + Download logs Stáhnout protokoly diff --git a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.de.xlf b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.de.xlf index a583bcb75ca..69c00ca05cf 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.de.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.de.xlf @@ -32,6 +32,11 @@ Keine Ressource ausgewählt + + Don't wrap log lines + Don't wrap log lines + + {0} console logs {0} Konsolenprotokolle @@ -87,6 +92,11 @@ Protokolle werden überwacht... + + Wrap log lines + Wrap log lines + + Download logs Protokolle herunterladen diff --git a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.es.xlf b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.es.xlf index 69752e4197f..51273bcdba6 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.es.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.es.xlf @@ -32,6 +32,11 @@ No hay ningún recurso seleccionado + + Don't wrap log lines + Don't wrap log lines + + {0} console logs Registros de consola de {0} @@ -87,6 +92,11 @@ Visualizando registros... + + Wrap log lines + Wrap log lines + + Download logs Descargar registros diff --git a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.fr.xlf b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.fr.xlf index 644e62ca9b7..6375bca1aa8 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.fr.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.fr.xlf @@ -32,6 +32,11 @@ Aucune ressource sélectionnée + + Don't wrap log lines + Don't wrap log lines + + {0} console logs Journaux de console {0} @@ -87,6 +92,11 @@ Surveillance en cours des journaux... Merci de patienter. + + Wrap log lines + Wrap log lines + + Download logs Télécharger les journaux diff --git a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.it.xlf b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.it.xlf index 94616425ee5..fb49567e308 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.it.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.it.xlf @@ -32,6 +32,11 @@ Nessuna risorsa selezionata + + Don't wrap log lines + Don't wrap log lines + + {0} console logs {0} log della console @@ -87,6 +92,11 @@ Controllo dei log in corso... + + Wrap log lines + Wrap log lines + + Download logs Scarica log diff --git a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.ja.xlf b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.ja.xlf index bb6a4d3002a..b04725e814b 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.ja.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.ja.xlf @@ -32,6 +32,11 @@ リソースが選択されていません + + Don't wrap log lines + Don't wrap log lines + + {0} console logs {0} のコンソール ログ @@ -87,6 +92,11 @@ ログを監視しています... + + Wrap log lines + Wrap log lines + + Download logs ログのダウンロード diff --git a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.ko.xlf b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.ko.xlf index 8e5e2fe2450..3a824d812c5 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.ko.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.ko.xlf @@ -32,6 +32,11 @@ 리소스를 선택하지 않음 + + Don't wrap log lines + Don't wrap log lines + + {0} console logs {0} 콘솔 로그 @@ -87,6 +92,11 @@ 로그를 보는 중... + + Wrap log lines + Wrap log lines + + Download logs 로그 다운로드 diff --git a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.pl.xlf b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.pl.xlf index a5174c32824..1e0e1c4c095 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.pl.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.pl.xlf @@ -32,6 +32,11 @@ Nie wybrano zasobu + + Don't wrap log lines + Don't wrap log lines + + {0} console logs Dzienniki konsoli: {0} @@ -87,6 +92,11 @@ Trwa oglądanie dzienników... + + Wrap log lines + Wrap log lines + + Download logs Pobierz dzienniki diff --git a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.pt-BR.xlf b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.pt-BR.xlf index b4e39d1f958..10b5432bdf4 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.pt-BR.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.pt-BR.xlf @@ -32,6 +32,11 @@ Não há nenhum recurso selecionado + + Don't wrap log lines + Don't wrap log lines + + {0} console logs {0} logs do console @@ -87,6 +92,11 @@ Observando logs... + + Wrap log lines + Wrap log lines + + Download logs Baixar logs diff --git a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.ru.xlf b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.ru.xlf index 6480102aaf8..547d7119205 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.ru.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.ru.xlf @@ -32,6 +32,11 @@ Нет выбранных ресурсов + + Don't wrap log lines + Don't wrap log lines + + {0} console logs Журналов консоли: {0} @@ -87,6 +92,11 @@ Просмотр журналов... + + Wrap log lines + Wrap log lines + + Download logs Скачать журналы diff --git a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.tr.xlf b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.tr.xlf index 2b3cb9aec13..abdae82c906 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.tr.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.tr.xlf @@ -32,6 +32,11 @@ Hiçbir kaynak seçilmedi + + Don't wrap log lines + Don't wrap log lines + + {0} console logs {0} konsol günlükleri @@ -87,6 +92,11 @@ Günlükler izleniyor... + + Wrap log lines + Wrap log lines + + Download logs İndirme günlükleri diff --git a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.zh-Hans.xlf b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.zh-Hans.xlf index 9fe46fb6517..74c3fee42a4 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.zh-Hans.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.zh-Hans.xlf @@ -32,6 +32,11 @@ 未选择资源 + + Don't wrap log lines + Don't wrap log lines + + {0} console logs {0} 控制台日志 @@ -87,6 +92,11 @@ 正在监视日志... + + Wrap log lines + Wrap log lines + + Download logs 下载日志 diff --git a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.zh-Hant.xlf b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.zh-Hant.xlf index 61c0e17102d..f6582552f0e 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.zh-Hant.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ConsoleLogs.zh-Hant.xlf @@ -32,6 +32,11 @@ 未選取任何資源 + + Don't wrap log lines + Don't wrap log lines + + {0} console logs {0} 主控台記錄 @@ -87,6 +92,11 @@ 正在監看記錄... + + Wrap log lines + Wrap log lines + + Download logs 下載記錄 diff --git a/src/Aspire.Dashboard/wwwroot/css/app.css b/src/Aspire.Dashboard/wwwroot/css/app.css index 8bfff2d47aa..b57dc8e9991 100644 --- a/src/Aspire.Dashboard/wwwroot/css/app.css +++ b/src/Aspire.Dashboard/wwwroot/css/app.css @@ -606,6 +606,15 @@ fluent-switch.table-switch::part(label) { width: 100%; } +.wrap-log-container .log-line-row-container { + overflow: visible; +} + +.wrap-log-container .log-content { + white-space: nowrap; + overflow-wrap: normal; +} + .log-line-row-container { width: 100%; overflow: hidden;