View Issue Details

IDProjectCategoryView StatusLast Update
0003757SAS.ПланетаХотелка / Feature requestpublic09-04-2021 11:56
ReporterVadimK Assigned Tozed  
PrioritynormalSeverityminorReproducibilityN/A
Status resolvedResolutionfixed 
Product Version201212 
Target Version211230Fixed in Version211230 
Summary0003757: PascalScript: Добавить возможность записи в лог (для отладки)
DescriptionВ программе присутствуют довольно скромные возможности по отладке паскаль-скриптов. Поэтому в рантайме основным способом отладки является запись скриптом отладочных сообщений в лог-файлы. Таких файлов может быть очень много (особенно учитывая отсутствие функции дописывания в файл). И логичнее и удобнее было бы распологать всех их в папке с кэшэм.

Но скрипту во время работы очень проблематично узнать, где располагается папка с кэшем соответствующего скрипту ZMP.

Во-первых, сама программа SASPlanet.exe может быть запущена из любой папки любого диска.

Во-вторых, скрипту не известен тип кэша и название папки кэша, которое прописано в params.txt (NameInCache=)

Кроме-того не стоит забывать, что операция записи файла сама по себе небезопасна. При определённом стечении обстоятельств можно случайно что-нибудь испортить.
Steps To ReproduceСобственно предложение: добавить функцию записи файла в папку кэша:

function SaveToFileInCacheFolder(const Filename: AnsiString; const AData: AnsiString): LongInt;

Filename - это путь до файла ВНУТРИ папки кэша.

Например:
SaveToFileInCacheFolder('\debug.txt',VReaponseData);
или
SaveToFileInCacheFolder('debug.txt',VReaponseHeader);
или
SaveToFileInCacheFolder('/GarminSys/'+TileName,VReaponseData);

Здесь за корневую папку (\ или /) считается папка с кэшем. Первый слэш можно просто отбрасывать.
Additional InformationКстати, заодно можно было бы добавить фунцию дописываеия файла:

function AppendToFileInCacheFolder(const Filename: AnsiString; const AData: AnsiString): LongInt;

Пример:

AppendToFileInCacheFolder('debug.txt',VReaponseHeader);
TagsNo tags attached.

Activities

zed

03-04-2021 14:22

manager   ~0020092

Делать, как вы описываете, нельзя по многим причинам. Но можно сделать интерфейс логера, который будет писать в папку logs в корневой папке программы. Имя логфайла давать по имени zmp.

VadimK

05-04-2021 05:28

reporter   ~0020093

Было бы здорово, если бы такой логгер появился! Ибо создавать отдельный лог-файл на каждую запись не очень удобно. :(

zed

05-04-2021 08:31

manager   ~0020094

Судя по примерам использования, вы хотите записывать в лог заголовки и тело запроса, так вот, есть гораздо более удобный способ посмотреть эти данные в реальном времени - Fiddler.

В SAS на вкладке Интернет включить "Использовать системные настройки прокси", установить и запустить Fiddler - где вы сможете просматривать абсолютно все сетевые запросы SAS (и не только).

zed

05-04-2021 13:57

manager   ~0020095

Добавил вот такой интерфейс:

  IPascalScriptLogger = interface    
    procedure Write(const AStr: AnsiString);
    procedure WriteFmt(const AFormat: string; const AArgs: array of const);
  end;
внутри скрипта доступна переменная Logger с типом этого интерфейса.

Пример использования:

begin
  ResultURL = ...

  Logger.Write(ResultURL);
  Logger.WriteFmt('ScriptBuffer = %s', [ScriptBuffer]);
end;
Каждый вывод в лог форматируется следующим образом:

[%ThreadId%] %TimeStamp%: %Сообщение_из_скрипта%\r\n
Лог пишется в папку .\Logs\zmp\%имя_zmp%.log

zed

05-04-2021 13:58

manager   ~0020096

Такого функционала достаточно?

VadimK

09-04-2021 11:03

reporter   ~0020107

Last edited: 09-04-2021 11:06

Да, достаточно! Спасибо огромное!
Проверил на своём скрипте - всё работает.

На [URL=http://www.sasgis.org/wikisasiya/doku.php/%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D1%81%D0%BA%D0%B0%D0%BB%D1%8C_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2]сайте[/URL] бы обновить упомянуть об этой новой фишке. И других тоже. :)

zed

09-04-2021 11:56

manager   ~0020108

Займитесь, в wiki может писать любой желающий.

Issue History

Date Modified Username Field Change
03-04-2021 11:25 VadimK New Issue
03-04-2021 14:22 zed Note Added: 0020092
05-04-2021 05:28 VadimK Note Added: 0020093
05-04-2021 08:25 zed Product Version .Nightly => 201212
05-04-2021 08:25 zed Summary для скриптов: добавить функцию записи файла в папку кэша => PascalScript: Добавить возможность записи в лог (для отладки)
05-04-2021 08:31 zed Note Added: 0020094
05-04-2021 08:32 zed Status new => confirmed
05-04-2021 08:32 zed Target Version => 211230
05-04-2021 13:57 zed Note Added: 0020095
05-04-2021 13:58 zed Note Added: 0020096
05-04-2021 13:58 zed Assigned To => zed
05-04-2021 13:58 zed Status confirmed => feedback
09-04-2021 11:03 VadimK Note Added: 0020107
09-04-2021 11:03 VadimK Status feedback => assigned
09-04-2021 11:06 VadimK Note Edited: 0020107
09-04-2021 11:56 zed Note Added: 0020108
09-04-2021 11:56 zed Status assigned => resolved
09-04-2021 11:56 zed Fixed in Version => 211230
09-04-2021 11:56 zed Resolution open => fixed
08-08-2025 13:24 zed Category Хотелка => Хотелка / Feature request