2009-07-27 28 views
21

क्या कोई मुझे एक अच्छा, मुफ्त डेल्फी लॉगिंग ढांचा संकेत दे सकता है? इसका उपयोग करना आसान होना चाहिए और इसे सादा पाठ, डेटाबेस और नेटवर्क सहित विभिन्न "लॉग लेखकों" का समर्थन करना चाहिए।अच्छा, मुफ्त डेल्फी लॉगिंग ढांचा

+1

यहाँ ... नाम से बोलने, Log4delphi और Log4D दोनों प्रेरित है और Log4J के बाद मॉडलिंग की तो वे किस तरह अलग हैं कर रहे हैं और एक coment बनाने कैसे के बीच चयन करने के लिए नहीं किया जा सकता ? –

उत्तर

13

Which logging library is better? निम्नलिखित में से केवल दो अंतिम हैं।

+0

tracetool.sourceforge.net काफी धीमा है ... –

+1

लॉग 4 डी -> छोड़ा गया – Ampere

+1

@ केनी खुला स्रोत होने के नाते, लॉग 4 डी विकास किसी भी समय दूसरों द्वारा जारी रखा जा सकता है। इसके अलावा, यहां सूचीबद्ध Log4Delphi एक अलग परियोजना है। – mjn

7

मुझे पता है कि यह मुफ़्त नहीं है - लेकिन इसके पैसे के लायक है: CodeSite राइज सॉफ्टवेयर द्वारा। गुणवत्ता की कीमत है! :-)

मुझे हमेशा कोडसाइट के साथ काम करना अच्छा लगता है, विशेष रूप से किसी भी प्रकार की ऑब्जेक्ट्स को लॉग में जोड़ने की क्षमता स्ट्रिंग प्रारूप में भारी रूपांतरण के बिना अक्सर बहुत उपयोगी होती है।

फिर से: मुक्त नहीं है, लेकिन सोने में इसकी कीमत के लायक है, अगर आप वास्तव में उत्पादन-गुणवत्ता लॉगिंग और उन लॉगों को देखने के बारे में गंभीर हैं।

मार्क

+7

मुझे इसके साथ असहमत होना है, हालांकि मेरी राय निश्चित रूप से बहुत पक्षपातपूर्ण है, क्योंकि मैं SmartInspect लॉगिंग टूल के पीछे डेवलपर्स में से एक हूं। कोडसाइट का लगभग कई कारणों में से एक सबसे अच्छा समाधान नहीं है क्योंकि डेटा को लॉग करने के लिए आपको अपने आवेदन के साथ बाहरी डिस्पैचर सेवा वितरित करना है (हां, अब कोडसाइट के लिए प्रत्यक्ष प्रोटोकॉल हैं, लेकिन वे बहुत सीमित और धीमे हैं) । कोडसाइट के खिलाफ अन्य कारण हैं, लेकिन यह मुख्य कारणों में से एक है जो उपयोगकर्ता मेरे अनुभव में अन्य टूल्स पर स्विच करते हैं। –

+0

मैं डिस्पैचर सेवा पर आपका बिंदु देखता हूं - यह आपके परिदृश्य के आधार पर एक दोष हो सकता है। आपके पास अन्य कारण क्या होंगे? –

+1

marc_s: डाउनवोट के बारे में खेद है, मैं मानता हूं कि यह आपके कथन के साथ मेरी असहमति को संवाद करने का सबसे अच्छा तरीका नहीं था (मैंने डाउनवोट हटा दिया है), और इसका मतलब निजी नहीं था। –

3

मैं कोडसाइट के एक बड़े प्रशंसक भी हूँ, लेकिन आप मुक्त करने के लिए देख रहे हैं, कैसे या तो डेल्फी आईडीई या DebugView from SysInternals साथ OutputDebugString के बारे में।

3

कोडसाइट के लिए एक और विकल्प Overseer जो खुले sourced और nexus project का हिस्सा है, लेकिन अकेले तो खड़ा करने की आवश्यकता नहीं है उनके ढांचे का उपयोग करें।

1

लॉग 4 डी, जावाफोर्टर पर डेल्फी के लिए जावा Log4J logging framework का एक और बंदरगाह है।

Log4D project page at sourceforge

अपनी वास्तुकला का वर्णन CodeCentral और here पर पाया जा सकता।

सहायता फ़ाइलें http://cc.embarcadero.com/item/16446 पर ऑनलाइन उपलब्ध हैं।

यह वर्तमान में log4j 1.2.12 पर आधारित है और काफी सक्रिय है, और उपयोग करने में बहुत आसान है। इसमें TLogODSAppender, TLogStreamAppender, TLogFileAppender, TLogRollingFileAppender शामिल है।

निम्नलिखित उदाहरण प्रोजेक्ट एक ओडीएस एपेंडर बनाता है। यदि आप इसे आईडीई में चलाते हैं, तो लॉग संदेश 'इवेंट लॉग' विंडो में दिखाई देंगे।

program Log4Dexample; 

{$APPTYPE CONSOLE} 

uses 
    Log4D, 
    SysUtils; 

var 
    Logger: TLogLogger; 

begin 
    try 
    // basic configuration - creates a TLogODSAppender (ODS = OutputDebugString) 
    TLogBasicConfigurator.Configure; 

    // set the log level 
    TLogLogger.GetRootLogger.Level := Trace; 

    // create a named logger 
    Logger := TLogLogger.GetLogger('exampleLogger'); 

    // write log messages 
    Logger.Fatal('fatal output'); 
    Logger.Error('error output'); 
    Logger.Warn('warn output'); 
    Logger.Info('info output'); 
    Logger.Debug('debug output'); 
    Logger.Trace('trace output'); 

    ReadLn; 

    except 
    on E:Exception do 
    begin 
     Writeln(E.Classname, ': ', E.Message); 
     ReadLn; 
    end; 
    end; 
end. 

लेखन appenders, सीधा है यहाँ एक सरल सांत्वना appender का एक उदाहरण है:

unit LogConsoleAppender; 

interface 

uses 
    Log4D; 

type 
    { Send log messages to console output. } 
    TLogConsoleAppender = class(TLogCustomAppender) 
    protected 
    procedure DoAppend(const Message: string); override; 
    end; 

implementation 

{ TLogConsoleAppender } 

procedure TLogConsoleAppender.DoAppend(const Message: string); 
begin 
    if IsConsole then 
    Write(Message); 
end; 

initialization 
    RegisterAppender(TLogConsoleAppender); 

end. 
+0

इस परियोजना को छोड़ दिया गया था। – Ampere

6

मैं पहुँच प्रदान किया गया है निष्क्रिय Log4Delphi परियोजना अद्यतन करने के लिए और मैं bugfixes के 4 साल लुढ़का है और स्रोत-फोर्ज पर उपलब्ध नवीनतम 0.8 रिलीज में पैच। मैं इस पुस्तकालय का उत्पादन में उपयोग करता हूं और इसे बहुत स्थिर और भरोसेमंद और उपयोग में आसान पाया है।

Log4Delphi Downloads Page

+0

लगता है कि 2010 के बाद से कोई अपडेट नहीं है। – Ampere

+1

केनी, कई डेल्फी ढांचे के साथ वहां समर्थन और रखरखाव शुरू हो रहा है क्योंकि लोग डेल्फी का उपयोग करना बंद कर देते हैं। एक ऐसा व्यक्ति था जिसने लॉग 4 डेल्फी का क्लोन बनाया था और इसे अद्यतित रख रहा था, लेकिन अब मैं उसका पेज ठीक नहीं लग रहा हूं। – Melloware

2

डेल्फी है, जो एक एकल फाइल (nxlogging.pas) में आता है के लिए एक और नया प्रवेश ढांचा नहीं है। nxlogging log4d (परिशिष्ट, प्रारूपक) जैसे वर्गों का एक अच्छा हल्का और शक्तिशाली सेट है, लेकिन बहुत आसान उपयोग है। इसमें फ़ाइल एपेंडर (रोलिंग फाइलें, सभी एक ही, आदि ...) और एक टीसीपी एपेंडर भी शामिल है, ताकि आप अपने लॉग को केंद्रीय लॉग सर्वर पर अग्रेषित कर सकें।

+1

लिंक: http://www.navimatix.de/loesungen/log-server/logging-fuer-delphi-nxlogging/ – mjn

+0

@mjn धन्यवाद, यह बहुत अच्छा लगता है। – vladon

+2

@mjn दुर्भाग्यवश, यह जर्मन में है। साइट का अनुवाद Google के साथ किया जा सकता है, लेकिन एप्लिकेशन स्वयं नहीं। – vladon

0

एक लॉगर लाइब्रेरी को समकालिक रूप से सामग्री को डंप नहीं करना चाहिए। इससे एप्लिकेशन धीमा हो जाएगा। इसके बजाए, इसे सामग्री को बफर करने और फ़्लश होने पर उन्हें डंप करने की आवश्यकता होती है।

यह थ्रेड-सुरक्षित भी होना चाहिए और विभिन्न धागे से सामग्री को डंप करने में सक्षम होना चाहिए। (और अधिमानतः थ्रेड आईडी को लॉग इन करने में सक्षम भी हो)

यह भी लचीला और एकाधिक आउटपुट प्रारूपों को लॉग करने में सक्षम होना चाहिए।

यहाँ एक पुस्तकालय जो यह सब करता है: loggerpro

संबंधित मुद्दे