-----------------------------------------------------------------------
-- util-log -- Utility Log Package
-- Copyright (C) 2001 - 2024 Stephane Carrez
-- Written by Stephane Carrez (Stephane.Carrez@gmail.com)
-- SPDX-License-Identifier: Apache-2.0
-----------------------------------------------------------------------
with Ada.Strings;
with Ada.Strings.Fixed;
with Ada.Strings.Maps;
package body Util.Log is
Separator : constant Ada.Strings.Maps.Character_Mapping
:= Ada.Strings.Maps.To_Mapping (":", ",");
-- ------------------------------
-- Get the log level name.
-- ------------------------------
function Get_Level_Name (Level : Level_Type) return String is
begin
if Level = FATAL_LEVEL then
return "FATAL";
elsif Level = ERROR_LEVEL then
return "ERROR";
elsif Level = WARN_LEVEL then
return "WARN ";
elsif Level = INFO_LEVEL then
return "INFO ";
elsif Level = DEBUG_LEVEL then
return "DEBUG";
else
return Level_Type'Image (Level);
end if;
end Get_Level_Name;
-- ------------------------------
-- Get the log level from the property value
-- ------------------------------
function Get_Level (Value : in String;
Default : in Level_Type := INFO_LEVEL) return Level_Type is
use Ada.Strings;
Val : constant String := Fixed.Trim (Value, Both);
Pos : constant Natural := Fixed.Index (Val, ",", Mapping => Separator);
begin
if Pos > Val'First then
return Get_Level (Val (Val'First .. Pos - 1), Default);
elsif Val = "INFO" then
return INFO_LEVEL;
elsif Val = "DEBUG" then
return DEBUG_LEVEL;
elsif Val = "WARN" then
return WARN_LEVEL;
elsif Val = "ERROR" then
return ERROR_LEVEL;
elsif Val = "FATAL" then
return FATAL_LEVEL;
else
return Default;
end if;
end Get_Level;
end Util.Log;