Log4net günlüğü ile böyle bir şey yapmak mümkün mü?Dizeleri log4net ile birleştirmek
logger.Debug("username : {0} password : {1} server : {2}",username,server,password)
Ya ben sadece çirkin "+"
bitiştirmek seçeneğiyle kaldım.
Log4net günlüğü ile böyle bir şey yapmak mümkün mü?Dizeleri log4net ile birleştirmek
logger.Debug("username : {0} password : {1} server : {2}",username,server,password)
Ya ben sadece çirkin "+"
bitiştirmek seçeneğiyle kaldım.
Böyle dize biçimini kullanabilirsiniz:
logger.Debug(string.Format("username : {0} password : {1} server : {2}",
username, server, password))
Evet yapabilirsiniz, iki şekilde
log.Debug(String.format("username : {0} password : {1} server : {2}",username,server,password));
Ya default API
logger.DebugFormat("username : {0} password : {1} server : {2}",username,server,password)
DebugFormat ile güzel nokta – Fabjan
DebugFormat'ın herhangi bir dize işlemi yapmanın CPU maliyetinden * kaçınılacağını veya mevcut loglevel'in Bilgi veya daha yüksek olması durumunda ToString() 'ın çağrılacağını unutmayın. Diğer dize biçimlendirme yanıtları bu optimizasyona sahip değil. –
Tam olarak değil. Evet, 'DebugFormat' yönteminin ilk satırı günlüğe kaydetme düzeyini kontrol eder ve daha düşükse geri dönebilir. Ancak .NET her zaman, ** yöntemi ** çağırmadan önce argüman olarak ilettiğiniz ifadeleri ** her zaman değerlendirecektir. Yukarıdaki örnekte sadece nesne referanslarını geçiyorum, bu yüzden bu iyi. Ama bir sebepten ötürü 'log.DebugFormat()' ifadesini argümanlar boyunca bir veritabanı sorgusu gibi değerlendirmek için ağır olan bir deyimi iletirsek? Evet, bu kötü bir fikir ama sadece "ToString()" işlemi String format seviyesinde değerlendirilirse, yorumun doğru olmadığını, aksi takdirde –
Ayrıca yeni string interpolation feature of C# 6.0 kullanabilirsiniz kullanmak içinde :
logger.Debug($"username : {username} password : {password} server : {server}")
değil. Gözlerimin bu şekilde kanamayı bırakması biraz zaman alacak, ama sonuçta muhtemelen en iyi cevap! – spender
Bu kötü bir örnektir, ancak uzun dizelerimizin olduğu ve benim için hangi değişkenin hangi yer tutucusuna karşılık geldiğini bulmaya daha kolay olduğunu düşündüğüm projemde kullanıyorum. Bunun benim için bir seçenek olması benim için bir artı ve Visual Studio SO'dan daha iyi bir format yapıyor. –
'DebugFormat' yerine' Debug' çağrısı yapılması, 'Debug' işlevinin çağrılması, günlük düzeyi daha yüksek olsa bile, değerlendirilmekte olan dizede her zaman sonuçlanacaktır. 'DebugFormat' öğesini çağırırken, dize yalnızca günlük seviyesi yeterince düşük olduğunda değerlendirilir. Dolayısıyla, performansın kaygılandığı uygulamalarda, 'DebugFormat' kullanmayı düşünebilirsiniz. – Craig
Desteklenmezse, her zaman string.Format 'geri alabilirsiniz. Birleştirmeyi önlemek için +1. – spender