1 //
2 // Copyright (c) 2010-2018 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 AntShell.Commands;
10 using Antmicro.Renode.UserInterface.Tokenizer;
11 using Antmicro.Renode.Logging;
12 
13 namespace Antmicro.Renode.UserInterface.Commands
14 {
15     public class LogCommand : AutoLoadCommand
16     {
PrintHelp(ICommandInteraction writer)17         public override void PrintHelp(ICommandInteraction writer)
18         {
19             base.PrintHelp(writer);
20             writer.WriteLine();
21             writer.WriteLine("Usage:");
22             writer.WriteLine(String.Format("{0} <<message to log>> <<log level>>", Name));
23         }
24         [Runnable]
Run(ICommandInteraction writer, StringToken message)25         public void Run(ICommandInteraction writer, StringToken message)
26         {
27             InnerLog(LogLevel.Info, message.Value);
28         }
29 
30         [Runnable]
Run(ICommandInteraction writer, StringToken message, [Values( -1L, 0L, 1L, 2L, 3L)] DecimalIntegerToken level)31         public void Run(ICommandInteraction writer, StringToken message, [Values( -1L, 0L, 1L, 2L, 3L)] DecimalIntegerToken level)
32         {
33             InnerLog((LogLevel)(int)level.Value, message.Value);
34         }
35 
36         [Runnable]
Run(ICommandInteraction writer, StringToken message, [Values( R, R, R, R, R)] StringToken level)37         public void Run(ICommandInteraction writer, StringToken message, [Values( "Noisy", "Debug", "Info", "Warning", "Error")] StringToken level)
38         {
39             InnerLog(LogLevel.Parse(level.Value), message.Value);
40         }
41 
InnerLog(LogLevel logLevel, string message)42         private void InnerLog(LogLevel logLevel, string message)
43         {
44             Logger.LogAs(monitor, logLevel, "Script: " + message);
45         }
46 
LogCommand(Monitor monitor)47         public LogCommand(Monitor monitor)
48             : base(monitor, "log", "logs messages.")
49         {
50         }
51     }
52 }
53 
54