J'ai un exécutable qui en fonction de la ligne de commande fourni commutateur ressemble à quelque chose comme:Comment obtenir une méthode d'assistance dans une classe d'utilitaires pour utiliser son enregistreur d'appel dans 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
}
}
}
Dans ma config log4net J'ai deux enregistreurs distincts, l'un pour chacun des SummaryDiskSpaceReporter et DetailedDiskSpaceReporter parce que leurs besoins d'exploitation forestière sont différentes:
<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 et DetailedDiskSpaceReporter appellent une méthode d'assistance dans une classe appelée Helpers. Je veux mettre un peu de journalisation dans les méthodes de classe d'aide. Donc, la question est, comment puis-je obtenir la méthode Helpers.CreateMessage() pour utiliser le même enregistreur que son appelant?
à-dire
SummaryDiskSpaceReporter.Run() -> utiliser DiskSpaceReporting.SummaryDiskSpaceReporter enregistreur DetailedDiskSpaceReporter.Run() -> utiliser enregistreur DiskSpaceReporting.DetailedDiskSpaceReporter .
Vive Kev
Salut merci pour la réponse .... J'ai pensé aux options 1 et 2, mais il doit y avoir un moyen d'obtenir log4net gratuitement pour ainsi dire. – Kev