SASGIS

Веб-картография и навигация


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0003757SAS.Планета[All Projects] Хотелкаpublic03-04-2021 11:2509-04-2021 11:56
ReporterVadimK 
Assigned Tozed 
PrioritynormalSeverityminorReproducibilityN/A
StatusresolvedResolutionfixed 
PlatformOSOS Version
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.
Attached Files

- Relationships

-  Notes
(0020092)
zed (manager)
03-04-2021 14:22

Делать, как вы описываете, нельзя по многим причинам. Но можно сделать интерфейс логера, который будет писать в папку logs в корневой папке программы. Имя логфайла давать по имени zmp.
(0020093)
VadimK (reporter)
05-04-2021 05:28

Было бы здорово, если бы такой логгер появился! Ибо создавать отдельный лог-файл на каждую запись не очень удобно. :(
(0020094)
zed (manager)
05-04-2021 08:31

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

В SAS на вкладке Интернет включить "Использовать системные настройки прокси", установить и запустить Fiddler - где вы сможете просматривать абсолютно все сетевые запросы SAS (и не только).
(0020095)
zed (manager)
05-04-2021 13:57

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

  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
(0020096)
zed (manager)
05-04-2021 13:58

Такого функционала достаточно?
(0020107)
VadimK (reporter)
09-04-2021 11:03
edited on: 09-04-2021 11:06

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

На сайте бы обновить упомянуть об этой новой фишке. И других тоже. :)

(0020108)
zed (manager)
09-04-2021 11:56

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

- Users who viewed this issue
User List Anonymous (1161x), VadimK (9x), zed (16x), vdemidov (2x)
Total Views 1188
Last View 21-11-2024 12:48

- 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 View Revisions
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



Copyright © 2007 - 2024 SAS.Planet Team