Commit 71ae70b0fb82b309744825d19d633c4f635bc011

Authored by Schwirg László
1 parent 56460ca9

v1.22.3.0

Vrh.Log4Pro.MaintenanceConsole/Manager - WindowsServiceManager.cs
... ... @@ -305,13 +305,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
305 305 ColorConsole.Write($", User:");
306 306 ColorConsole.Write($"{ws.StartName}", ConsoleColor.White);
307 307 ColorConsole.WriteLine();
308   - return ws.DisplayName+ws.Description;
  308 + return ws.DisplayName + ws.Description;
309 309 }
310 310 else if (lineix == 1)
311 311 {
312 312 ColorConsole.Write($"Win service:");
313 313 ColorConsole.Write($"{ws.Name}", ConsoleColor.Cyan);
314   - var fc2 =
  314 + var fc2 =
315 315 ws.Status.Contains(nameof(WindowsService.WmiServiceStatus.OK)) ? ConsoleColor.Green
316 316 : ws.Status.Contains(nameof(WindowsService.WmiServiceStatus.Unknown)) ? ConsoleColor.Red
317 317 : ws.Status.Contains(nameof(WindowsService.WmiServiceStatus.Error)) ? ConsoleColor.Red
... ... @@ -323,12 +323,15 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
323 323 : ws.State.Contains(nameof(WindowsService.WmiServiceState.Unknown)) ? ConsoleColor.Red
324 324 : ws.State.Contains(nameof(WindowsService.WmiServiceState.Unregistered)) ? ConsoleColor.Red
325 325 : ConsoleColor.Yellow;
  326 + var wsstatetext =
  327 + ws.State.Contains(nameof(WindowsService.WmiServiceState.Running)) ? ws.State
  328 + : ws.State.Contains(nameof(WindowsService.WmiServiceState.Unknown)) ? ws.State
  329 + : ws.State.Contains(nameof(WindowsService.WmiServiceState.Unregistered)) ? ws.State
  330 + : ws.State;
326 331 ColorConsole.Write($" / ");
327   - ColorConsole.Write($"{ws.State}", fc0);
  332 + ColorConsole.Write($"{wsstatetext}", fc0);
328 333 ColorConsole.Write($")");
329   - ColorConsole.Write($", StartMode:");
330   - ColorConsole.Write($"{ws.StartMode}", ConsoleColor.Cyan);
331   - if(ws.Status==nameof(WindowsService.WmiServiceStatus.OK) && ws.State != nameof(WindowsService.WmiServiceState.Stopped) && ws.State != nameof(WindowsService.WmiServiceState.Unknown))
  334 + if (ws.Status == nameof(WindowsService.WmiServiceStatus.OK) && ws.State != nameof(WindowsService.WmiServiceState.Stopped) && ws.State != nameof(WindowsService.WmiServiceState.Unknown))
332 335 {
333 336 ColorConsole.Write($", Priority:");
334 337 ColorConsole.Write($"{ws.PriorityClass}", ConsoleColor.White);
... ... @@ -340,23 +343,55 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
340 343 }
341 344 else if (lineix == 2)
342 345 {
  346 + ColorConsole.Write($"Service StartMode:");
  347 + ColorConsole.Write($"{ws.StartMode}", ConsoleColor.Cyan);
  348 + if (ws.State.Contains(nameof(WindowsService.WmiServiceState.Running)))
  349 + {
  350 + var uptime = (DateTime.Now - ws.ProcessLastStartTime);
  351 + var uptimetext = ""
  352 + + (Math.Truncate(uptime.TotalDays) == 0 ? "" : (string.Format("{0:%d}", uptime) + " days "))
  353 + + (Math.Truncate(uptime.TotalHours) == 0 ? "" : (string.Format("{0:%h}", uptime) + " hours "))
  354 + + (Math.Truncate(uptime.TotalMinutes) == 0 ? "" : (string.Format("{0:%m}", uptime) + " minutes"));
  355 + var uptimecolor = uptime.TotalHours > 72 ? ConsoleColor.Green : uptime.TotalHours > 24 ? ConsoleColor.White : uptime.TotalHours > 12 ? ConsoleColor.Yellow : ConsoleColor.Red;
  356 + ColorConsole.Write($", last started at:");
  357 + ColorConsole.Write($"{ws.ProcessLastStartTime}", uptimecolor);
  358 + ColorConsole.Write($", up time since then:");
  359 + ColorConsole.Write(uptimetext, uptimecolor);
  360 + }
  361 + else if (ws.ProcessLastExitTime.HasValue)
  362 + {
  363 + var downtime = (DateTime.Now - ws.ProcessLastExitTime.Value);
  364 + var downtimetext = ""
  365 + + (Math.Truncate(downtime.TotalDays) == 0 ? "" : (string.Format("{0:%d}", downtime) + " days "))
  366 + + (Math.Truncate(downtime.TotalHours) == 0 ? "" : (string.Format("{0:%h}", downtime) + " hours "))
  367 + + (Math.Truncate(downtime.TotalMinutes) == 0 ? "" : (string.Format("{0:%m}", downtime) + " minutes"));
  368 + ColorConsole.Write($", last exited at:");
  369 + ColorConsole.Write($"{ws.ProcessLastExitTime}", ConsoleColor.Red);
  370 + ColorConsole.Write($", down time since then:");
  371 + ColorConsole.Write(downtimetext, ConsoleColor.Red);
  372 + }
  373 + ColorConsole.WriteLine();
  374 + return " ";
  375 + }
  376 + else if (lineix == 3)
  377 + {
343 378 if (string.IsNullOrEmpty(ws.PathName)) { return ""; }
344 379 var cmdarray = CommandLineParser.SplitArgs(ws.PathName).ToArray();
345 380 ColorConsole.Write($"Start command:");
346 381 ColorConsole.WriteLine($"{cmdarray[0]}", ConsoleColor.White);
347 382 return ws.PathName;
348 383 }
349   - else if (lineix == 3)
  384 + else if (lineix == 4)
350 385 {
351 386 if (string.IsNullOrEmpty(ws.PathName)) { return ""; }
352 387 var cmdparams = CommandLineParser.SplitArgs(ws.PathName).Skip(1).ToArray();
353   - if (cmdparams.Length==0) { return ""; }
354   - var cmdparamsstr = string.Join("][", cmdparams);
  388 + if (cmdparams.Length == 0) { return ""; }
  389 + var cmdparamsstr = "["+string.Join("][", cmdparams)+"]";
355 390 ColorConsole.Write($"Start arguments:");
356   - ColorConsole.WriteLine($"[{cmdparamsstr}]", ConsoleColor.White);
  391 + ColorConsole.WriteLine(cmdparamsstr, ConsoleColor.White);
357 392 return cmdparamsstr;
358 393 }
359   - else if (lineix == 4)
  394 + else if (lineix == 5)
360 395 {
361 396 ColorConsole.WriteLine();
362 397 return " ";
... ... @@ -711,6 +746,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
711 746  
712 747 }
713 748 #endregion WindowsServiceManagerCore class
  749 +
714 750 #region WindowsServiceManagerXmlProcessor class
715 751 public class WindowsServiceManagerXmlProcessor : XmlParser
716 752 {
... ... @@ -786,6 +822,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
786 822 public List<string> ThisDependsOn;
787 823 public List<string> ServicesDependOnThis;
788 824 public int ProcessId;
  825 + public DateTime ProcessLastStartTime;
  826 + public DateTime? ProcessLastExitTime;
789 827 public ServiceStartMode StartMode;
790 828 public string State;
791 829 public string Status;
... ... @@ -907,7 +945,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
907 945 if (this.State != nameof(WmiServiceState.Stopped))
908 946 {
909 947 this.ProcessId = Convert.ToInt32(wmiService[nameof(WindowsService.ProcessId)]);
910   - this.PriorityClass = Process.GetProcessById(this.ProcessId).PriorityClass.ToString();
  948 + var thisprocess = Process.GetProcessById(this.ProcessId);
  949 + this.ProcessLastStartTime = thisprocess.StartTime;
  950 + this.ProcessLastExitTime = thisprocess.HasExited?thisprocess.ExitTime:(DateTime?)null;
  951 + this.PriorityClass = thisprocess.PriorityClass.ToString();
911 952 }
912 953 }
913 954 }
... ...
Vrh.Log4Pro.MaintenanceConsole/Program.cs
... ... @@ -39,6 +39,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole
39 39 {
40 40 static void Main(string[] args)
41 41 {
  42 + //TESTS.TimeSpanFormatTest();
42 43 //TESTS.MSMQTest();
43 44 //return;
44 45 var forcedmodulekey = CommandLine.GetCommandLineArgument(args, CLP.CMD_MODULE);
... ... @@ -94,6 +95,16 @@ namespace Vrh.Log4Pro.MaintenanceConsole
94 95 }
95 96 public static class TESTS
96 97 {
  98 + public static void TimeSpanFormatTest()
  99 + {
  100 + var uptime = new TimeSpan(3, 4, 15, 33);
  101 + var uptimetext0 = uptime.ToString("%d") + " days ";
  102 + var uptimetext1 = string.Format("{0:%d}", uptime) + " days ";
  103 + var uptimetext2 = string.Format("{0:%h}", uptime) + " hours";
  104 + var uptimetext3 = string.Format("{0:%m}", uptime) + " minutes";
  105 + Console.WriteLine(uptimetext1+uptimetext2+ uptimetext3);
  106 + Console.ReadKey();
  107 + }
97 108 public static void GetWorkingProcesses()
98 109 {
99 110 using (ServerManager manager = new ServerManager())
... ...
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
... ... @@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
32 32 // You can specify all the values or you can default the Build and Revision Numbers
33 33 // by using the '*' as shown below:
34 34 // [assembly: AssemblyVersion("1.0.*")]
35   -[assembly: AssemblyVersion("1.22.2.0")]
36   -[assembly: AssemblyFileVersion("1.22.2.0")]
  35 +[assembly: AssemblyVersion("1.22.3.0")]
  36 +[assembly: AssemblyFileVersion("1.22.3.0")]
... ...