我有一个可执行文件,取决于提供的命令行开关,它看起来像:
程序.cs -
namespace DiskSpaceReporting
{
class Program
{
static void Main(string[] args)
{
if(args.Length == 1)
{
switch(args[0])
{
case "-summarytotals":
SummaryDiskSpaceReporter.Run();
break;
case "-detailed":
DetailedDiskSpaceReporter.Run();
break;
//...other reporting types
}
}
}
}
}
摘要DiskSpaceReporter.cs
namespace DiskSpaceReporting
{
public class SummaryDiskSpaceReporter
{
private static IEventIDLog log = EventIDLogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public static void Run()
{
log.Info(1234, "Starting");
//...do work
string message = Helpers.CreateMessage(messageID);
//...do work
}
}
}
详细的DiskSpaceReporter.cs
namespace DiskSpaceReporting
{
public class DetailedDiskSpaceReporter
{
private static IEventIDLog log = EventIDLogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public static void Run()
{
log.Info(1234, "Starting");
//...do work
string message = Helpers.CreateMessage(messageID);
//...do work
}
}
}
助手.cs
namespace DiskSpaceReporting
{
public class Helpers
{
private static IEventIDLog log = ???
public static string CreateMessage(Guid messageID)
{
log.Info(9876, "Starting");
//...do work
}
}
}
在我的 log4net 配置中,我有两个单独的记录器,每个记录器用于 SummaryDiskSpaceReporter 和DetailedDiskSpaceReporter,因为它们的记录要求不同:
<root>
<level value="ALL" />
<appender-ref ref="ConsoleLogAppender" />
<appender-ref ref="EventLogAppender" />
</root>
<logger name="DiskSpaceReporting.SummaryDiskSpaceReporter">
<appender-ref ref="SummaryDiskSpaceReporterRollingFileAppender"/>
</logger>
<logger name="DiskSpaceReporting.DetailedDiskSpaceReporter">
<appender-ref ref="DetailedDiskSpaceReporterRollingFileAppender"/>
</logger>
SummaryDiskSpaceReporter 和DetailedDiskSpaceReporter 都调用Helpers 类中的帮助器方法。我想将一些日志记录到辅助类方法中。
所以...问题是,如何让 Helpers.CreateMessage() 方法使用与其调用者相同的记录器?
IE
SummaryDiskSpaceReporter.Run() -> 使用 DiskSpaceReporting.SummaryDiskSpaceReporter 记录器DetailedDiskSpaceReporter.Run() -> 使用 DiskSpaceReporting.DetailedDiskSpaceReporter 记录器。
干杯凯夫