2011-12-30 2 views
4

У меня есть класс журнала, который имеет несколько статических методов, которые помогают записывать информацию о моей программе.Как узнать, какой поток вызвал мой метод журнала?

Моя проблема в том, что у меня есть 2 потока, и оба отправляют запросы в мой класс журнала для регистрации информации.

Я бы хотел, чтобы мой класс журнала показывал, какие потоки регистрируют строки.

Что мне делать для достижения этой функциональности?

Мой код в основном так:

public class Log { 
    public static void log (String tag , Object message) 
    { 
     String lineToPrint = ""; 
     //Builds the string taking in time data and other information 
     //... 
     //This is where I want to see which thread called this log function 
     //... 

     System.out.println(lineToPrint); 
    } 
} 
+2

Почему бы вам не использовать один из существующих структур журналов, таких как log4j (возможно, завернутый с помощью ведения журнала apache commons)? – Thomas

ответ

8

Добавьте это в регистраторе:

Thread t = Thread.currentThread(); 
String name = t.getName(); 

и сбросить его в лог-файл.

+0

Удивительный! Спасибо, dbf! –

0
public class Temp{ 
    static Thread t = null; 
} 

temp.t = Thread.currentThread();

public static void log (String tag , Object message) 
{ 
     temp.t.getName();//get it 
} 
0

Кроме того, в отношении pthread с, функция для зная о вызывающем потоке является: pthread_t pthread_self (void);

Ссылка: http://pubs.opengroup.org/onlinepubs/007908799/xsh/pthread_self.html

+0

Да, я знаю, что pthreads не упоминались в OP, но это может помочь кому-то другому. –