1 //
2 // Copyright (c) 2010-2025 Antmicro
3 // Copyright (c) 2011-2015 Realtime Embedded
4 //
5 // This file is licensed under the MIT License.
6 // Full license text is available in 'licenses/MIT.txt'.
7 //
8 using System;
9 using System.Text;
10 using Antmicro.Renode.Core;
11 
12 namespace Antmicro.Renode.Logging
13 {
14     public abstract class TextBackend : LoggerBackend
15     {
FormatLogEntry(LogEntry entry)16         protected virtual string FormatLogEntry(LogEntry entry)
17         {
18             var messageBuilder = new StringBuilder();
19             var messages = entry.Message.Split('\n').GetEnumerator();
20             messages.MoveNext();
21 
22             if(entry.ObjectName != null)
23             {
24                 var currentEmulation = EmulationManager.Instance.CurrentEmulation;
25                 var machineCount = currentEmulation.MachinesCount;
26                 if((entry.ForceMachineName || machineCount > 1) && entry.MachineName != null)
27                 {
28                     messageBuilder.AppendFormat("{2}/{0}: {1}", entry.ObjectName, messages.Current, entry.MachineName);
29                 }
30                 else
31                 {
32                     messageBuilder.AppendFormat("{0}: {1}", entry.ObjectName, messages.Current);
33                 }
34             }
35             else
36             {
37                 messageBuilder.Append(messages.Current);
38             }
39             while(messages.MoveNext())
40             {
41                 messageBuilder.Append(Environment.NewLine);
42                 messageBuilder.Append("    ");
43                 messageBuilder.Append(messages.Current);
44             }
45 
46             if(entry.Count > 1)
47             {
48                 messageBuilder.AppendFormat(" ({0})", entry.Count);
49             }
50 
51             return messageBuilder.ToString();
52         }
53     }
54 }
55 
56