Если вы принимаете макет каталога Visual Studio, то ваша программа будет находиться в [drive] \ work \ Project1 \ bin \ Release \ (или, возможно, \ Debug). И вы хотите, чтобы ваш файл журнала находился в каталоге [диск] \ work \ Project1 \ Log.
Этот каталог совпадает с [drive]\work\Project1\bin\Release\..\..\Log\
Итак, один из способов сделать это - получить полный путь к исполняемой программе, извлечь каталог и добавить .... \ Log. Как это:
using System.IO; // for Path class
using System.Windows.Forms; // for Application.ExecutablePath
...
string GetLogFilePath()
{
string ProgramPath = Path.GetDirectory(Application.ExecutablePath);
string LogPath = Path.Combine(ProgramPath, @"\..\..\Log\");
return LogPath;
}
Если вы не хотите включать System.Windows.Forms, вы можете вместо этого включить System.Reflection и получить местоположение сборки с помощью Assembly.GetExecutingAssembly (). Location.