From b3ba073368480eaebca8162a36272ea6ceaad368 Mon Sep 17 00:00:00 2001 From: ww-rm Date: Wed, 29 Oct 2025 21:34:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SpineViewerCLI/SpineViewerCLI.cs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/SpineViewerCLI/SpineViewerCLI.cs b/SpineViewerCLI/SpineViewerCLI.cs index cfd845a..9bcbea3 100644 --- a/SpineViewerCLI/SpineViewerCLI.cs +++ b/SpineViewerCLI/SpineViewerCLI.cs @@ -5,11 +5,14 @@ using Spine; using Spine.Exporters; using System.CommandLine; using System.Globalization; +using System.Runtime.InteropServices; namespace SpineViewerCLI { public static class SpineViewerCLI { + private static readonly Logger _logger = LogManager.GetCurrentClassLogger(); + public static Option OptQuiet { get; } = new("--quiet", "-q") { Description = "Suppress console logging (quiet mode).", @@ -33,11 +36,21 @@ namespace SpineViewerCLI if (!result.GetValue(OptQuiet)) InitializeConsoleLog(); - return result.Invoke(); + try + { + return result.Invoke(); + } + catch (Exception ex) + { + _logger.Trace(ex.ToString()); + _logger.Fatal("Failed to execute, {0}", ex.Message); + return -1; + } } private static void InitializeFileLog() { + // XXX: 未知原因 linux 平台上无法正常生成日志文件 var config = new NLog.Config.LoggingConfiguration(); var fileTarget = new NLog.Targets.FileTarget("fileTarget") { @@ -72,13 +85,15 @@ namespace SpineViewerCLI DetectOutputRedirected = true, }; + consoleTarget.RowHighlightingRules.Add(new("level == LogLevel.Trace", NLog.Targets.ConsoleOutputColor.DarkGray, NLog.Targets.ConsoleOutputColor.NoChange)); + consoleTarget.RowHighlightingRules.Add(new("level == LogLevel.Debug", NLog.Targets.ConsoleOutputColor.DarkGray, NLog.Targets.ConsoleOutputColor.NoChange)); consoleTarget.RowHighlightingRules.Add(new("level == LogLevel.Info", NLog.Targets.ConsoleOutputColor.DarkGray, NLog.Targets.ConsoleOutputColor.NoChange)); consoleTarget.RowHighlightingRules.Add(new("level == LogLevel.Warn", NLog.Targets.ConsoleOutputColor.DarkYellow, NLog.Targets.ConsoleOutputColor.NoChange)); consoleTarget.RowHighlightingRules.Add(new("level == LogLevel.Error", NLog.Targets.ConsoleOutputColor.Red, NLog.Targets.ConsoleOutputColor.NoChange)); consoleTarget.RowHighlightingRules.Add(new("level == LogLevel.Fatal", NLog.Targets.ConsoleOutputColor.White, NLog.Targets.ConsoleOutputColor.DarkRed)); config.AddTarget(consoleTarget); - config.AddRule(LogLevel.Info, LogLevel.Fatal, consoleTarget); + config.AddRule(LogLevel.Trace, LogLevel.Fatal, consoleTarget); LogManager.Configuration = config; } }