Я хочу записывать все журналы в разных задачах в разные журналы, как указано в фрагменте кода ниже. Но с помощью приведенного ниже кода он записывает журналы во все файлы журналов, созданные в разных задачах, но журналы, написанные для задачи, объединяются с журналами, написанными другой задачей.
private static string logFile;
private static void CreateEmptyFile(string filename)
{
if (!File.Exists(filename))
{
File.Create(filename).Dispose();
}
}
private static void Log(string logMessage, string path)
{
string timeStamp = String.Format("{0} {1} - ", DateTime.Now.ToLongDateString(), DateTime.Now.ToLongTimeString());
File.AppendAllText(path, timeStamp + logMessage + Environment.NewLine);
}
private static void TaskMethod1(arg1)
{
// It calls a bunch of functions and they all log to logfile and all these operation including bunch of functions called(they also log using Log method)
logFile = DateTime.Now.ToFileTime() + ".txt";
CreateEmptyFile(logFile);
Log("TaskMethod1", logFile);
}
private static async Task TaskMethod()
{
while(runningService)
{
// Thi will create more than one task in parallel to run and each task can take upto 30 minutes to finish. Based on some condition the upper limit for parallel tasks can go upto 10.
Task.Run(() => TaskMethod1(arg1);
}
}
internal static void Start()
{
runningService = true;
Task1 = Task.Run(() => TaskMethod());
}
Я хочу, чтобы все файлы журналов для разных задач быть отделенным и содержимое одной задачи не должно быть объединено с содержанием другой задачи. Я подозреваю, что это из-за глобальной переменной logFile
, которая меняет свое значение при создании новой задачи, но я не уверен, является ли это причиной записи журналов в журналы других задач? Как я могу решить это, если это проблема? Должен ли я передавать logFile
в качестве аргумента каждой функции вместо того, чтобы объявлять ее глобально.