Лог-файлы при разработке в Ada
Существует несколько вариантов для сохранения логов в текстовые файлы при разработке на языке Ada:
- пакет Ada.Text_IO
- пакет AWS.Log из библиотеки AWS
- пакет GNATCOLL.Traces из библиотеки GNAT Component Collection
- пакет IAL.Log из библиотеки YAMI4
- пакет Util.Log из библиотеки Ada-Util
- библиотека Alog
- библиотека Log4Ada (liblog4ada)
Наиболее простым в плане отсутствия зависимостей является использование пакета Ada.Text_IO, который позволяет полноценно работать с текстовыми файлами.
В пакете доступны следующие режимы для открытия или создания файла (параметр Mode):
- In_File - только для чтения
- Out_File - перезапись с нуля
- Append_File - создание с нуля или добавление в конец существующего файла
Также для работы с логами Ada.Text_IO предлагает процедуры и функции:
Создание файла (+ открытие)
procedure Create ( File : in out File_Type; Mode : File_Mode := Out_File; Name : String := ""; Form : String := "" )
Открытие файла (если существует, иначе вызов исключения)
procedure Open ( File : in out File_Type; Mode : File_Mode; Name : String; Form : String := "" )
Освобождение файлового дескриптора
procedure Close (File : in out File_Type)
Удаление файла
procedure Delete (File : in out File_Type)
Возврат логического результата по признаку "Открыт ли файл"
function Is_Open (File : File_Type) return Boolean;
Подводя итог, приведу пример использования Ada.Text_IO с перезаписью лог-файла при каждом запуске программы.
with Ada.Text_IO;
procedure Main is
-- Описание для файлового дескриптора
f : Ada.Text_IO.File_Type;
begin
-- Создание файла в режиме перезаписи
Ada.Text_IO.Create(
File => f,
Mode => Ada.Text_IO.Out_File,
Name => "my.log"
);
-- Запись строки в файл
Ada.Text_IO.Put_Line(
File => f,
Item => "Hello world!"
);
-- Освобождение файлового дескриптора
Ada.Text_IO.Close(File => f);
end Main;
С прочими возможностями пакета Ada.Text_IO можно ознакомиться в спецификации.