Konuyu Oyla:
  • Derecelendirme: 5/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Log Tutma Fonksiyonu
#1
Merhaba arkadaşlar, her ne kadar küçük bir fonksiyon olsa da geçmişte yazdığım dll'yi sizinle paylaşmak istedim. Fonksiyon ile yeni başlayanlar için diyeyim loglarınızı tutabilirsiniz.

Dll içi kodları;

library LogFunc;

{Company: HyperSoftware
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
end.


Kullanımı;

Log('Kullanıcı girişi hatalı');

Gösterimi;

[01.07.2017 13:40] Kullanıcı girişi hatalı


GitHub Linki

Umarım bu koda ihtiyacı olup kullanmak isteyen vardır. Yardımcı olabildiysem ne mutlu bana.

Not: Prosedür ama fonksiyon başlığa yakıştığı için fonksiyon kullandım Smile  

İyi çalışmalar Smile
kisisel_logo_dark.png
WWW
Cevapla
#2
Bunun veritabanı tablosuna yazan bir sürümünü de yaparsanız daha faydalı olabilir, bu haliyle de en azından bir text dosya ile kullanılabilir,
Cevapla
#3
(02-07-2017, Saat: 20:32)cengaver Adlı Kullanıcıdan Alıntı: Bunun veritabanı tablosuna yazan bir sürümünü de yaparsanız daha faydalı olabilir, bu haliyle de en azından bir text dosya ile kullanılabilir,

Gece oturup yazmaya çalışacam, öneri için teşekkürler  Shy
kisisel_logo_dark.png
WWW
Cevapla
#4
(02-07-2017, Saat: 20:32)cengaver Adlı Kullanıcıdan Alıntı: Bunun veritabanı tablosuna yazan bir sürümünü de yaparsanız daha faydalı olabilir, bu haliyle de en azından bir text dosya ile kullanılabilir,


Tekrar merhabalar, bir konu açmak yerine burdan paylaşmak istedim. Geliştirmek için öneri veren @cengaver hoca'ya öncellikle teşekkürlerimi iletiyorum. SQL Server için geçerli olan ve bu DLL'yi kullanırken formunuzda herhangi bir connection bağlantısını bulundurmak zorunda değilsiniz. Direkt bileşensiz kullanabilirsiniz.


library FuncLog;

{
Company: HyperSoftware
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.


Birkaç öneri vereyim eğer Access veya başka bir veritabanı için kullanacaksanız UniDac bileşeninin Provider kütüphanesini DLL'ye import etmeli ve connection bileşenini oluşturma kodunun hemen yukarısına yazmanız lazım. 

Bkz.

var
Provider: TSQLServerUniProvider;
begin
Provider := TSQLServerUniProvider.Create(nil);

Devam edeyim şimdi değişkenlerin ne anlama geldiğinden bahsedeyim;

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:

Log('Deneme Log Kaydı!', 'Provider Name=SQL Server;Data Source=DESKTOP-7U6ETIN;Initial Catalog=hyper_emlak;Port=0;User ID=sa;Password=hyperdbpassword', 'Log');


Gösterimi:

VMPpBV.png


Eski GitHub linkinden ulaşabilirsiniz.

Klasör adı: LogModule(Database)


İyi çalışmalar Smile
kisisel_logo_dark.png
WWW
Cevapla
#5
Query.SQL.Text := 'select * from '+TAdi;
Query.Active := True;
bu kısım eğer log tablo ile ilgili bir işlem yapılmayacaksa sistemi yoran bir işlem olacak.
sadece insert adımı olacak ise, bu iki satırı remlemekte/silmekte fayda var.
Cevapla
#6
(03-07-2017, Saat: 01:44)meko Adlı Kullanıcıdan Alıntı:
Query.SQL.Text := 'select * from '+TAdi;
Query.Active := True;
bu kısım eğer log tablo ile ilgili bir işlem yapılmayacaksa sistemi yoran bir işlem olacak.
sadece insert adımı olacak ise, bu iki satırı remlemekte/silmekte fayda var.

Tecrübesizliğime verin hocam Smile
kisisel_logo_dark.png
WWW
Cevapla
#7
Daniele Teti'ye ait bu işi yapan loggerpro isimli bir framework var. İncelemenizi tavsiye ederim

https://github.com/danieleteti/loggerpro

Özellikle demolarını incelemenizi tavsiye ederim.
Cevapla
#8
(03-07-2017, Saat: 09:27)edo Adlı Kullanıcıdan Alıntı: Daniele Teti'ye ait bu işi yapan loggerpro isimli bir framework var. İncelemenizi tavsiye ederim

https://github.com/danieleteti/loggerpro

Özellikle demolarını incelemenizi tavsiye ederim.

Öneri için teşekkürler hocam, inceleyeceğim Smile
kisisel_logo_dark.png
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  2 Tarih arası periyodik tarih parçalama fonksiyonu adelphiforumz 4 584 17-02-2025, Saat: 17:33
Son Yorum: adelphiforumz
  [ÇÖZÜLDÜ] basılı tutma info@guzelceker.com 9 6.787 27-11-2019, Saat: 16:47
Son Yorum: info@guzelceker.com
  Listbox 'da isim tutma quiet1day 4 4.258 11-06-2018, Saat: 16:47
Son Yorum: quiet1day
  Hızlı satır okuma bu fonksiyonu çalıştıramadım satır okuma fonksiyonu Delphiseven 21 17.534 10-07-2017, Saat: 17:16
Son Yorum: ismailkocacan



Konuyu Okuyanlar: 1 Ziyaretçi