diff --git a/.github/workflows/dotnet-release.yml b/.github/workflows/dotnet-release.yml index e1b66cd..6b458c6 100644 --- a/.github/workflows/dotnet-release.yml +++ b/.github/workflows/dotnet-release.yml @@ -126,7 +126,8 @@ jobs: - name: Compress Linux build run: | mkdir -p release - zip -r "release/${PROJ_CLI_NAME}-${VERSION}-Linux-SelfContained.zip" "publish/${PROJ_CLI_NAME}-${VERSION}-Linux-SelfContained" + cd publish + zip -r "../release/${PROJ_CLI_NAME}-${VERSION}-Linux-SelfContained.zip" "${PROJ_CLI_NAME}-${VERSION}-Linux-SelfContained" - name: Upload Linux zip to GitHub Release uses: actions/upload-release-asset@v1 diff --git a/SpineViewer/App.xaml.cs b/SpineViewer/App.xaml.cs index af068ba..32b1040 100644 --- a/SpineViewer/App.xaml.cs +++ b/SpineViewer/App.xaml.cs @@ -86,6 +86,7 @@ namespace SpineViewer Encoding = System.Text.Encoding.UTF8, Layout = "${date:format=yyyy-MM-dd HH\\:mm\\:ss} - ${level:uppercase=true} - ${processid} - ${callsite-filename:includeSourcePath=false}:${callsite-linenumber} - ${message}", AutoFlush = true, + CreateDirs = true, FileName = "${basedir}/logs/app.log", ArchiveFileName = "${basedir}/logs/app.{#}.log", ArchiveNumbering = NLog.Targets.ArchiveNumberingMode.Rolling, diff --git a/SpineViewerCLI/SpineViewerCLI.cs b/SpineViewerCLI/SpineViewerCLI.cs index 8615ad9..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,17 +36,28 @@ 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") { Encoding = System.Text.Encoding.UTF8, Layout = "${date:format=yyyy-MM-dd HH\\:mm\\:ss} - ${level:uppercase=true} - ${processid} - ${callsite-filename:includeSourcePath=false}:${callsite-linenumber} - ${message}", AutoFlush = true, + CreateDirs = true, FileName = "${basedir}/logs/cli.log", ArchiveFileName = "${basedir}/logs/cli.{#}.log", ArchiveNumbering = NLog.Targets.ArchiveNumberingMode.Rolling, @@ -71,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; } }