У меня есть исполняемый файл, который в зависимости от параметра командной строки поставки выглядит примерно так:Как получить вспомогательный метод в классе утилиты, чтобы использовать его журнал вызовов в log4net?
Program.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
}
}
}
}
}
SummaryDiskSpaceReporter.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
}
}
}
DetailedDiskSpaceReporter. 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
}
}
}
Helpers.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() для использования того же регистратора, что и его вызывающий?
т.е.
SummaryDiskSpaceReporter.Run() -> использовать DiskSpaceReporting.SummaryDiskSpaceReporter регистратор DetailedDiskSpaceReporter.Run() -> использовать DiskSpaceReporting.DetailedDiskSpaceReporter регистратор.
Приветствия Kev
Эй спасибо за ответ .... Я думал о вариантах 1 и 2, но должен быть способ заставить log4net сделать это как можно скорее. – Kev 2008-10-23 07:24:08