diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/TraceLogger.cs b/WelsonJS.Toolkit/WelsonJS.Launcher/TraceLogger.cs index bf94f28..a74f168 100644 --- a/WelsonJS.Toolkit/WelsonJS.Launcher/TraceLogger.cs +++ b/WelsonJS.Toolkit/WelsonJS.Launcher/TraceLogger.cs @@ -13,7 +13,7 @@ namespace WelsonJS.Launcher { /// /// File-based trace logger. - /// Writes to %APPDATA%\WelsonJS\Logs\..pid<####>.log + /// Writes to %APPDATA%\WelsonJS\Logs\...log /// Falls back to current directory if %APPDATA%\WelsonJS\Logs cannot be created. /// public class TraceLogger : ICompatibleLogger @@ -42,13 +42,13 @@ namespace WelsonJS.Launcher baseDir = AppDomain.CurrentDomain.BaseDirectory; } - _logFilePath = Path.Combine(baseDir, $"{ns}.{suffix}.pid{pid}.log"); - - var fs = new FileStream(_logFilePath, FileMode.Append, FileAccess.Write, FileShare.Read); - var writer = new StreamWriter(fs) { AutoFlush = true }; + _logFilePath = Path.Combine(baseDir, $"{ns}.{suffix}.{pid}.log"); if (!Trace.Listeners.OfType().Any()) { + var fs = new FileStream(_logFilePath, FileMode.Append, FileAccess.Write, FileShare.Read); + var writer = new StreamWriter(fs) { AutoFlush = true }; + Trace.Listeners.Add(new TextWriterTraceListener(writer) { Name = "FileTraceListener", @@ -71,12 +71,19 @@ namespace WelsonJS.Launcher private static string Format(object[] args) { - if (args == null || args.Length == 0) return string.Empty; - if (args.Length == 1) return args[0]?.ToString() ?? string.Empty; + if (args == null || args.Length == 0) + return string.Empty; + + if (args.Length == 1) + return args[0]?.ToString() ?? string.Empty; string fmt = args[0]?.ToString() ?? string.Empty; - try { return string.Format(fmt, args.Skip(1).ToArray()); } - catch { return string.Join(" ", args.Select(a => a?.ToString() ?? "")); } + try { + return string.Format(fmt, args.Skip(1).ToArray()); + } + catch { + return string.Join(" ", args.Select(a => a?.ToString() ?? "")); + } } private static string GenerateRandomSuffix(int length)