আমি একজন এনএলএগ ব্যবহারকারী এবং সাধারণত এটি এটিকে ফুটিয়ে তোলে:
var _logger = LogManager.GetCurrentClassLogger();
এটি কিছুটা অদ্ভুত বলে মনে হয়েছিল যে আপনি লগ 4 নেটতে প্রতিফলনের মধ্য দিয়ে যেতে হবে, তাই এনএলওগ উত্স কোডটিতে আমার নজর ছিল এবং দেখুন এবং দেখুন যে তারা আপনার জন্য এটি করে:
[MethodImpl(MethodImplOptions.NoInlining)]
public static Logger GetCurrentClassLogger()
{
string loggerName;
Type declaringType;
int framesToSkip = 1;
do
{
#if SILVERLIGHT
StackFrame frame = new StackTrace().GetFrame(framesToSkip);
#else
StackFrame frame = new StackFrame(framesToSkip, false);
#endif
var method = frame.GetMethod();
declaringType = method.DeclaringType;
if (declaringType == null)
{
loggerName = method.Name;
break;
}
framesToSkip++;
loggerName = declaringType.FullName;
} while (declaringType.Module.Name.Equals("mscorlib.dll", StringComparison.OrdinalIgnoreCase));
return globalFactory.GetLogger(loggerName);
}
আমার ধারণা আমি লগ 4 নেট এর জন্য আমার বয়লার কোডের অংশ হিসাবে প্রতিচ্ছবিটি পেস্ট করার পরিবর্তে একটি এক্সটেনশন বা স্থির পদ্ধতি হিসাবে অনুরূপ কিছু লিখব :)