Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2011, 18:18   #11
ADRAY
 
Регистрация: 24.11.2011
Сообщений: 9
По умолчанию

Огромное спасибо))) Очень приятно)
Вы себе даже не представляете, как меня выручаете!

Итак, конкретно мое задание:"Реализация сохранения лога активности пользователя на сервере (в какие папки заходил, что скачивал / закачивал, что редактировал ...)". Дано - FTP-клиент и недопрограммист.

Последний раз редактировалось ADRAY; 26.11.2011 в 20:16.
ADRAY вне форума Ответить с цитированием
Старый 26.11.2011, 22:33   #12
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Так и применяйте эту функцию в вашем коде:
Код:
...
  //код включения вашего сервера
  Log('FTP-Сервер был запущен');
  //поработали с сервером
  //Код выключения сервера
  Log('FTP-Сервер был выключен');
...
А если ваше приложение многопоточное, то лучше завернуть эту функцию в класс, например:
Код:
type
  TLogs = class
  public
    FRTL:TRTLCriticalSection;
    function Log(const AText:AnsiString):Boolean;
  public
    constructor Create;
    destructor Destroy;
  end;

implementation

constructor TLogs.Create;
var
  i:Integer;
begin
  inherited Create;
  InitializeCriticalSection(FRTL);
end;

destructor TLogs.Destroy;
begin
  DeleteCriticalSection(FRTL);
  inherited Destroy;
end;

function TLogs.Log(const AText:AnsiString):Boolean;
var
  LStr:AnsiString;
  LFile:TextFile;
begin
  try
    try
      EnterCriticalSection(FRTL);
      Result:=True;
      LStr:=ExtractFilePath(Application.ExeName)+'log.txt';
      AssignFile(LFile,LStr);
      if FileExists(LStr) then Append(LFile) else Rewrite(LFile);
      LStr:=Format('%s - %s',[DateTimeToStr(Now),AText]);
      Writeln(LFile,LStr);
    finally
      CloseFile(LFile);
      LeaveCriticalSection(FRTL);
    end;
  except
    Result:=False;
  end;
end;
Использование:
Код:
...
var
  Logs:TLogs;
begin
  Logs:=TLogs.Create;
  ...
  Logs.Log('Log-message is created');
  ...
  FreeAndNil(Logs);
end;
...
В текстовом файле log.txt появится строчка:
26.11.2011 22:32:45 - Log-message is created

Вы можете логгировать все нужные события FTP-клиента таким образом. Написание FTP-сервера и реализация механизмов работы с клиентами это уже другой разговор)
"ковыряю изнутри" (с)

Последний раз редактировалось 3D Hunter; 26.11.2011 в 23:12.
3D Hunter вне форума Ответить с цитированием
Старый 26.11.2011, 23:10   #13
ADRAY
 
Регистрация: 24.11.2011
Сообщений: 9
По умолчанию

По-моему, это немного не то.
В текстовом файле должна сохранятся инфа о том, в какие папки заходил пользователь, что редактировал, скачивал...
ADRAY вне форума Ответить с цитированием
Старый 26.11.2011, 23:26   #14
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Вы говорите уже про реализацию FTP-сервера. В названии темы спрашивается только про ведение лог-файла. Если у вас уже есть код сервера, то покажите те участки кода, где нужно осуществлять логгирование. Если вы имеете в виду и написание приложения, то создайте тему "как создать FTP-сервер".
Цитата:
В текстовом файле должна сохранятся инфа о том, в какие папки заходил пользователь, что редактировал, скачивал...
такое определение должен осуществлять код FTP-сервера как раз таки.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 26.11.2011, 23:36   #15
ADRAY
 
Регистрация: 24.11.2011
Сообщений: 9
По умолчанию

хм...
Очень странно.
Мое задание: написать FTP-клиент + реализация сохранения лога активности пользователя на сервере.
Сам сервер я скачиваю только для того, чтоб показать, что клиент правильно функционирует и работает. Код сервера я трогать не должна.

Цитата:
такое определение должен осуществлять код FTP-сервера как раз таки.
Вы уверены, что это задание можно сделать только изменяя код сервера?
ADRAY вне форума Ответить с цитированием
Старый 27.11.2011, 05:54   #16
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Не будет же FTP-клиент логгировть свои действия удаленно на сервере сам. Эму это не позволят права доступа, да и создать файл через запрос по протоколу... FTP-сервер должен либо понимать эту команду и сам логгировать действие, либо сам отслеживает активность подключений клиентов и логгирует из действия. В любом случае, нужно смотреть код сервера и внедрять в него логгирование. Или все проще... если это несекретно, выложите код на рассмотрение.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ведение лог-файла Vladya Общие вопросы C/C++ 5 16.03.2017 18:54
Ведение лог-файла ADRAY Помощь студентам 0 24.11.2011 00:25
Создание лог-файла Xeon332 Общие вопросы Delphi 6 24.05.2009 17:27
Быстрая запись лог-файла Lehatut Win Api 3 20.02.2009 15:59
Создание лог-файла ScreN Общие вопросы Delphi 8 11.01.2009 11:28