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