使用LogManager设置FileLogger路径

时间:2015-04-30 14:42:39

标签: log4net log4net-configuration log4net-appender

我有一个控制台应用程序,可能是一次运行多个实例。每个实例都在命令行参数中指定的路径中生成输出文件。我希望控制台应用程序在与输出文件相同的目录中创建日志文件(FileAppender)。这将确保多个实例不会写入同一日志文件,并且实例的日志与输出文件位于同一位置。以下是我创建和使用记录器的方法(在每个类和项目中)

private static readonly ILog Log = 
                        LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

...

// Inside a method
Log.InfoFormat("Output file ({0}) exists, deleting.", _commandLineOptions.OutputFile);

我希望我可以使用类似于this question

的方法

1 个答案:

答案 0 :(得分:0)

以前的代码......

class Program
{
   private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

   static void Main(string[] args)
   {
     ...
   }
   ...
}

解决方案

class Program
{
   private static ILog _log;

   static void Main(string[] args)
   {
     var outputPath = Path.GetDirectoryName(_commandLineOptions.OutputFile);
     GlobalContext.Properties["logpath"] = outputPath;
     _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
     ...
   }
   ...
}