Selamlar,
Basit iki farklı log oluşturabilecek fonksiyon tanıtacağım. Biri text tabanlı diğeri ise veritabanına kaydedebileceğiniz iki farklı fonksiyon.
Text Tabanlı
library LogFunc;
{Author: HyperXMan }
uses
System.SysUtils,
System.Classes,
Winapi.Windows;
{$R *.res}
Procedure Log(SLog: String);
var
StringL: TStringList;
buf: array[0..260] of char;
Yol: String;
begin
GetModuleFileName(HInstance, buf, Length(buf));
Yol := StringReplace(buf, '\LogFunc.dll', Trim(''), [rfReplaceAll, rfIgnoreCase]);
if FileExists(Yol+'\db.log') then
begin
StringL := TStringList.Create;
StringL.LoadFromFile(Yol+'\db.log');
StringL.Add('['+DateToStr(Date)+' '+TimeToStr(Time)+']: '+SLog);
StringL.SaveToFile(Yol+'\db.log');
end
else
begin
StringL := TStringList.Create;
StringL.Add('['+DateToStr(Date)+' '+TimeToStr(Time)+']: '+SLog);
StringL.SaveToFile(Yol+'\db.log');
end;
end;
Exports Log;
begin
Veritabanı Tabanlı
library FuncLog;
{Author: HyperXMan }
uses
System.SysUtils,
System.Classes,
Winapi.Windows,
Uni, SQLServerUniProvider;
{$R *.res}
Procedure Log(SLog, CString, TAdi: String);
var
Baglanti: TUniConnection;
Query: TUniQuery;
Provider: TSQLServerUniProvider;
begin
Provider := TSQLServerUniProvider.Create(nil);
Baglanti := TUniConnection.Create(nil);
Baglanti.ConnectString := CString;
Baglanti.Connected := True;
Query := TUniQuery.Create(nil);
Query.Connection := Baglanti;
//Query.SQL.Text := 'select * from '+TAdi;
//Query.Active := True;
Query.SQL.Text := 'insert into '+TAdi+' (Date, Comment) VALUES(:ADate, :Comment)'; //A koymamın sebebi :+D şeklini emoji algılayıp hata çıkması kullanımda A harfini siliniz.
Query.ParamByName('Date').AsDateTime := Now;
Query.ParamByName('Comment').AsString := SLog;
Query.ExecSQL;
end;
Exports Log;
begin
end.
SLog: Log açıklaması
CString: Connection tanımınız.
TAdi: Tablo adınız.
Not: Tabloda Date ve Comment türünde iki farklı kolon açmalısınız değiştirmek isterseniz fonksiyon üzerinden değiştirebilirsiniz.
Örnek Kullanım(SQL Server):
Log('Deneme Log Kaydı!', 'Provider Name=SQL Server;Data Source=DESKTOP-7U6ETIN;Initial Catalog=hyper_emlak;Port=0;User ID=sa;Password=hyperdbpassword', 'Log');
Projenin Github Linki için Tıklayınız
Uyarı: Memory Leak almamak için lütfen işlem sonunda Free, FreeAndNil veya Destroy fonksiyonlarını ekleyin/kullanın
İyi çalışmalar.