Konuyu Paylaş : facebook gplus twitter

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ı


Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

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
Eski dos'tan windows olmaz.
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ı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBunun 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
Eski dos'tan windows olmaz.
Cevapla
#4
(02-07-2017, Saat: 20:32)cengaver Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBunun 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 Linkleri Görebilmeniz İçin Giriş yap veya Üye Ollinkinden ulaşabilirsiniz.

Klasör adı: LogModule(Database)


İyi çalışmalar Smile
Eski dos'tan windows olmaz.
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ı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
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
Eski dos'tan windows olmaz.
Cevapla
#7
Daniele Teti'ye ait bu işi yapan loggerpro isimli bir framework var. İncelemenizi tavsiye ederim

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Özellikle demolarını incelemenizi tavsiye ederim.
Cevapla
#8
(03-07-2017, Saat: 09:27)edo Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlDaniele Teti'ye ait bu işi yapan loggerpro isimli bir framework var. İncelemenizi tavsiye ederim

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Özellikle demolarını incelemenizi tavsiye ederim.

Öneri için teşekkürler hocam, inceleyeceğim Smile
Eski dos'tan windows olmaz.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Hızlı satır okuma bu fonksiyonu çalıştıramadım satır okuma fonksiyonu Delphiseven 21 977 10-07-2017, Saat: 17:16
Son Yorum: ismailkocacan



Konuyu Okuyanlar: 1 Ziyaretçi