27.08.2007, 12:29 | #1 |
Участник
|
Как лучше всего вести лог?
Понадобилось, а не могу вспомнить.
Вроде в Аксапте был класс, который позволял записывать произвольную строку в лог. Эта строка автоматически записывалась в текстовый файл в каталоге log. Не могу вспомнить какой. Не подскажете? Понятно, что можно создать таблицу и организовать запись в текстовый файл средствами AsciiIO или TextBuffer. Но хотелось бы использовать стандартное средство, такое, чтобы любому программисту сразу было бы понятно - это "запись в лог". |
|
27.08.2007, 12:30 | #2 |
Участник
|
И еще. Про infolog знаю, но текстовых строк будет очень много. infolog сдохнет от такого количетсва.
|
|
27.08.2007, 13:05 | #3 |
Участник
|
Я пользую такую процедурку
X++: static server boolean ToFile(anytype _string, str _mode = 'A',Filename _file = "") { Filename fileName = xInfo::directory(DirectoryType::Config) + '..\\..\\log\\' + curuserid() + '-info2File.txt'; str toFile = strFmt("%1 [%2] '%3'", systemdateget(), time2str(timenow(), 1, 1), _string) + '\n'; AsciiIo file; ; file = new AsciiIO(fileName, 'A'); if (file.status() == IO_Status::Ok) { file.write(anytype + '\r\n'); return true; } return false; } |
|
27.08.2007, 13:20 | #4 |
Участник
|
Если каждый раз открывать файл, то куча времени уйдет на открытие файла.
В этом случае Log может существенно замедлить работу. нужо каким-то образом file handler держать в кэше... перехватывать crash, чтобы правильно закрыть файл... Поэтому хотелось бы что-нибудь системное. Ведь был же сарайчик... (С) Особенности национальной рыбалки |
|
27.08.2007, 13:27 | #5 |
Участник
|
Не видел я такого.
Даже трасировщик запросов SQL делает подобным образом вот здесь. X++: void outputFile(str message) { AsciiIo asciiIo = new AsciiIo(this.tracefile(),'a'); ; if (asciiIo) asciiIo.write(message); else warning(strFmt("@SYS65356",this.tracefile())); } |
|
|
За это сообщение автора поблагодарили: mazzy (5). |
27.08.2007, 13:29 | #6 |
Участник
|
Возможность была в классе SysTrace, но там обычное открытие/закрытие файла для каждой записи
|
|
|
За это сообщение автора поблагодарили: mazzy (5). |
27.08.2007, 13:37 | #7 |
Участник
|
SysTrace! Точно.
Спасибо. Значит, открывают/закрывают файл каждый раз? Спасибо. Надо подумать. Может быть, я хочу странного? |
|
27.08.2007, 13:43 | #8 |
Участник
|
Я думаю, что создание класса гораздо более ресурсоемкая операция, чем просто открытие файла.
|
|
27.08.2007, 13:54 | #9 |
Участник
|
Ага. Вспомнил. Я разбирался с этой штукой. инициализация там непростая.
Цитата:
SysTrace - позволяет настраивать себя в Сервис\Параметры\SQL Глобальный инстанс этого класса создается ядром, насколько я помню. Вроде еще какой-то интерфейс был. |
|
27.08.2007, 13:56 | #10 |
Moderator
|
В параметрах на закладке разработка есть "Ограничение на выдачу сообщений", себе обычно ставлю 10 000
__________________
С уважением, kvan. |
|
27.08.2007, 14:09 | #11 |
Участник
|
Цитата:
Я хочу проанализировать работу одной процедуры пользователя, которая тормозит. Мне кажется, что один из параметров в этой процедуре постоянно меньше 1. Я хочу скидыать информацию об этом параметре куда нибудь в течение одного-двух дней, чтобы потом выполнить анализ... |
|
27.08.2007, 14:25 | #12 |
Участник
|
Пока искал вспомнил о BMProcessLog. в Ax3.0
Пожалуй его и буду использовать, хотя он не в файл, а в таблицу пишет... Но ведь был же сарайчик... Как-то можно было текстовую строку в лог добавить... |
|
27.08.2007, 16:12 | #13 |
Участник
|
Когда нужен был лог на постоянной основе (периодический импорт из внешней сиестемы иногда были проблемы, надо было, чтоб админы разбирались). Писали сообщения в таблицку из под отдельного соединения, группируя по событиям (табличка с фактами импорта и табличка с сообщениями протокола). Плюс был в том, что удобно было искать.
|
|