Если я правильно понимаю, вы хотите создать один файл журнала на поток для каждого процесса на машину. Итак, учитывая описание того, что вы делаете, имена ваших файлов журналов могут выглядеть примерно так:
machine1_processid1_thread1.log
machine1_processid1_thread2.log
machine1_processid2_thread1.log
machine2_processid1_thread1.log
etc...
Вас волнует, какие фактические значения есть для любого из компонентов имени файла журнала? Другими словами, действительно ли важно, чтобы имя файла журнала состояло из идентифицируемых компонентов (имя машины, идентификатор потока, идентификатор процесса и т. Д.)? Или достаточно, чтобы имена файлов журнала просто были уникальными?
Один из подходов состоит в том, чтобы просто использовать Guid. Итак, где вы создаете имя файла журнала, вы можете сделать что-то вроде этого:
string logFileName = Guid.NewGuid().ToString() + ".log"
Это, вероятно, достигнет вашей цели - иметь файлы журналов с уникальными именами. Я предполагаю, что вполне возможно, что в итоге может произойти столкновение Гидов, но я не знаю достаточно об этом, чтобы сказать наверняка. Но этот подход не очень удобен для пользователя. Кто действительно хочет посмотреть папку, полную имен файлов на основе guid, и попытаться определить, на какое из них они действительно хотят посмотреть?
Может быть, полезно знать машину и процесс, который генерирует журналы? Таким образом, если вы знали или подозревали, что какая-то проблема возникает на определенном компьютере или конкретном процессе, вы можете найти только те файлы, которые были сгенерированы на этом компьютере / процессе. В этом случае вы все равно можете использовать Guid для именования файла, но вы можете дополнить его именем машины и / или процессом:
string logFileName = string.Format("{0}_{1}_{2}.log",
Environment.MachineName,
Process.GetCurrentProcess().ProcessName,
Guid.NewGuid());
Это должно дать имя файла журнала, которое будет немного более удобным для пользователя, и все еще уникальным по всем вашим критериям.
Таким образом, я бы порекомендовал попробовать использовать Guid, поскольку заявленная цель его состоит в том, чтобы предоставить глобальный уникальный идентификатор, а не пытаться придумать свой собственный алгоритм. Основным недостатком, как я уже отмечал выше, является то, что может быть раздражающим копаться в папке, полной файлов журналов на основе guid, пытаясь найти «правильный». Может помочь добавление имени файла более удобными для пользователя данными, такими как имя компьютера, имя процесса и т. Д.
Наконец, я упомяну, что если вы используете Guid, есть несколько вариантов форматирования guid.
http://msdn.microsoft.com/en-us/library/97af8hh4.aspx