Имя: Пароль:
1C
 
Как грамотно создавать файл лога?
0 1Снечег
 
28.07.07
12:14
Так как поиск не работает, приходится спрашивать

Как более грамотно сделать сабж?
1 Злопчинский
 
28.07.07
13:35
Лога чего?
2 1Снечег
 
28.07.07
14:25
лога выполнения обработки например
3 Iron
 
28.07.07
14:30
используй ЗаписьЖурналаРегистрации()
4 alex_presnykov
 
28.07.07
14:36
или создай dbf файл с нужной тебе структурой и заноси все туда...
5 1Сергей
 
28.07.07
14:47
я бы в ГБ создал процедурку:
Процедура ЗаписатьСтрокуВЛогФайл(ИмяФайла, строка) Экспорт

хотя конечно тормозить будет
6 Механикус
 
28.07.07
15:05
Ну вот простенький вариант:

Процедура ЛогФайл(ЛогТекст)
   
   перем ЛогФайлПуть;
   перем ЛогФайлИмя;
   перем ЛогФайл;
   Перем ЛогСтрока;
   
   ЛогФайлПуть = КаталогИБ() + "\log\";
   Если фс.СуществуетФайл(ЛогФайлПуть)=0 Тогда
       ФС.СоздатьКаталог(ЛогФайлПуть);
   КонецЕсли;
   
   ЛогФайлИмя  = "log.log";
   ЛогФайл = ЛогФайлПуть + ЛогФайлИмя;
   
   ЛогСтрока = Строка(ТекущаяДата())+" "+Строка(ТекущееВремя())+" "+ИмяПользователя()+" "+СокрЛП(ЛогТекст);
   
   Если ФлагОтладка=1 Тогда
       Сообщить(ЛогСтрока);
   ИначеЕсли Найти(ЛогТекст, "ОШИБКА!!!") > 0 Тогда
       Сообщить(ЛогСтрока);
   КонецЕсли;
   
   попытка              
       Т=СоздатьОбъект("Текст");  
       Если ФС.СуществуетФайл(ЛогФайл)=1 Тогда
           Т.Открыть(ЛогФайл);
       КонецЕсли;
       Т.ДобавитьСтроку(ЛогСтрока);
       Т.Записать(ЛогФайл);
   исключение
       сообщить(Строка(ТекущаяДата()) + " " + Строка(ТекущееВремя()) + " " + "Ошибка записи в логфайл " + ЛогФайл + ":" + логТекст);
   конецПопытки;
КонецПроцедуры
7 1Сергей
 
28.07.07
15:08
(6) работа замедлится в разы, если он будет писать по сотни строк в секунду
8 Механикус
 
28.07.07
15:14
(7) Ту поможет здравый смысл - сбасывать в лог разумную достаточность.
9 Механикус
 
28.07.07
15:14
сбрасывать :)
10 1Сергей
 
28.07.07
15:17
(9) Может всё-таки Создавать(Открывать) файл один раз, перед началом обработки?
11 Злопчинский
 
28.07.07
15:24
Вы все... бяки..
делается на раз:
лог ведем посредством Сообщить() в табло.
Потом все выведенное в табло - заливаем в файл.
Таким же образом МОЖНО АВТОМАТОМ ВЕСТИ ЛОГИ допустим перепроведения доков - т.е. все что вывалилось за ночь в табло - забираем в файл.
Смотреть сюда: (сам пользую и доволен)
http://www.infostart.ru/projects/432/?&desc=1
//
азначение: ВК ведет протокол всех сообщений, выводимых
в окно сообщений 1С (включая системные), а также всех MessageBox'ов
(Предупреждение, Вопрос, системные сообщения).
Протокол может записываться в файл в формате csv, а также
запоминаться в буфере в памяти.
Также позволяет выборочно блокировать вывод сообщений взависимости от типа маркера.

Полезно в ситуациях, когда пользователь не в состоянии прочитать вам сообщение об ошибке, выдаваемое 1С, или при разборах полетов, когда тот же пользователь с круглыми глазами говорит - "А программа меня никак не предупреждала".
12 1Сергей
 
28.07.07
15:27
(11) для того лог и нужен, чтоб если 1С вылетела, то в какой момент... А какой смысл записывать лог после успешного завершения обработки?
13 Злопчинский
 
28.07.07
15:28
Нифига себе - а что, у вас 1Сина вылетает на дню по 15 раз в разных местах...?
тогда тут логи - не подмога...
14 1Сергей
 
28.07.07
15:30
(13) у нас она не вылетает, и лог нам нафих не нужно и на работу я хожу только на мисте посидеть, да кофе попить :)
15 1Снечег
 
28.07.07
16:11
всем спасибо, остановился на варианте записывать в файл, который в принципе уже и так работал =)

за (3) спасибо, буду читать-разбираться..

зы: скорость не особо и важна, пишется на месяц-другой (надеюсь)
16 1Снечег
 
28.07.07
16:11
(14) стремимся, стремимся.. =)
Ошибка? Это не ошибка, это системная функция.