логи в фаил

wizard

Client
Регистрация
04.10.2011
Сообщения
990
Благодарностей
585
Баллы
93
Здравствуйте, подскажите снипет записи в строк\ строк в фаил (с локом файла на момент записи)
ну и туда бы еще условие: если переменная log_on == True то производим запись, в противном случае - действий не требуется.
Заранее спасибо.
 
Последнее редактирование:

shtift

Client
Регистрация
29.07.2015
Сообщения
148
Благодарностей
290
Баллы
63
1. Создаешь список. Например, "proxy".

2. Заходишь в свойства списка и выставляешь все 3 галочки, закрываешь.
1.png

3. Создаешь код C#
Код:
var list = project.Lists["proxy"];
list.Bind("C:\proxy.txt"); // Связываем список с файлом

// Тут записываем в файл
lock(SyncObjects.ListSyncer)
{
     list.Add(project.Variables["proxy"].Value); // Добавляем строку
}

// Тут берем из файла
string proxy = string.Empty;
try
{
     lock(SyncObjects.ListSyncer)
     {
          proxy = list.ElementAt(0); // Берем первую строку, кладем в переменную proxy
          list.RemoveAt(0); // Удаляем первую строку из файла
     }
}
catch (Exception e)
{
     project.SendWarningToLog("Файл proxy пуст!", true);
     throw new Exception(); // Генерируем ошибку - снипет завершится по неудаче
}
При использовании lock(SyncObjects.ListSyncer) текущий поток блокирует доступ к файлу от других потоков - они ждут своей очереди.
 
Последнее редактирование:

wizard

Client
Регистрация
04.10.2011
Сообщения
990
Благодарностей
585
Баллы
93
хотелось бы все на с# , так как много вложенных проектов ....
хотелось по раектам раскидать кубик и если в настройках включить логирование запись логов пошла...
а добавлять в каждый проект еще и список - как-то не хорошо
 

wizard

Client
Регистрация
04.10.2011
Сообщения
990
Благодарностей
585
Баллы
93
1. Создаешь список. Например, "proxy".

2. Заходишь в свойства списка и выставляешь все 3 галочки, закрываешь.
Посмотреть вложение 9849

3. Создаешь код C#
Код:
var list = project.Lists["proxy"];
list.Bind("C:\proxy.txt"); // Связываем список с файлом

// Тут записываем в файл
lock(SyncObjects.ListSyncer)
{
     list.Add(project.Variables["proxy"].Value); // Добавляем строку
}

// Тут берем из файла
string proxy = string.Empty;
try
{
     lock(SyncObjects.ListSyncer)
     {
          proxy = list.ElementAt(0); // Берем первую строку, кладем в переменную proxy
          list.RemoveAt(0); // Удаляем первую строку из файла
     }
}
catch (Exception e)
{
     project.SendWarningToLog("Файл proxy пуст!", true);
     throw new Exception(); // Генерируем ошибку - снипет завершится по неудаче
}
При использовании lock(SyncObjects.ListSyncer) текущий поток блокирует доступ к файлу от других потоков - они ждут своей очереди.
а подскажите как добавить в лист по номеру строки? я имею введу как тут list.ElementAt(0); // Берем первую строку .... а как положить по определенному номеру ?
 
Последнее редактирование:

shtift

Client
Регистрация
29.07.2015
Сообщения
148
Благодарностей
290
Баллы
63
возможно так list[123] = "test";
 

wizard

Client
Регистрация
04.10.2011
Сообщения
990
Благодарностей
585
Баллы
93

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 101
Баллы
113

deopl

Client
Регистрация
06.12.2011
Сообщения
656
Благодарностей
125
Баллы
43
А если у каждого потока свой лог, т.е. Вначале выполнения привязывается по логину, то лочить не нужно?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)