Açık kaynaklı bir C++ uygulamasına katkıda bulunuyorum. Bu uygulamada böyleloglama performansı ve operatör <<
if (Debug) std::cout << "MyClass | my debug message" << MyExpensiveStringConvertion() << std::endl;
olarak çizgilerle yapılan tüm günlük Ben öyle ki otomatik biçimlendirme ne yaparsa boost easylogginppp, gibi mevcut çerçevelerin birini kullanarak önerdi (diğer dillerde) daha gelişmiş günlüğü çerçevesini kullanmak için kullanılıyor ise ve çalışma zamanında yapılandırılabilir.
ama "(ayıklama) eğer" neredeyse hiçbir yüke sahiptir kullanarak yazma sırasında
Log(debug) << "MyClass | my debug message" << MyExpensiveStringConvertion()
< < operatör ve MyExpensiveStringConvertion() olay günlüğü hesaplanması hem gerektirir yanıtını verdi devre dışıdır. Bu bağımsız değişken doğru mu? eğer doğruysa, önemsemeliyiz? Çoğu oturum açma çerçevesi bu şekilde çalışır gibi gözüküyor, çoğu geliştiricinin dikkat etmemesi çoğu
Güncelleme: Anladığım (Hata Ayıkla) formunun sadece basit bir bool testi gerektirip gerektirmediğini anlıyorum, ancak maliyetlerin düşürülmesi için her türlü hileyi uygulamak için kayıt çerçevelerini beklemekteydim. "#define LOG (level) düzeyinde ise (doDebug (level)) Log (level)" diyen Dietmar Kühl.
MyExpensiveStringConver [s] ion() 'un daha fazla olması gerektiği doğrudur. '<<' değerlendirmesinden daha iyi. – Ryan
Çoğu günlük çerçevesi çöp. Bu yüzden kendi kitabımı yazdım. – doc
@doc Me de, üretimde can sıkıcı problemlerle karşılaşmamıza rağmen, uygun bir çerçevenin halihazırda ele alınmış olması muhtemeldir (örneğin, bir kişi işlemi klonladıktan ve günlük dosyamda yetim bir tanıtıcı bıraktığından, günlüğe kaydetme başarısız oluyor) –