Как мне узнать, какой поток вызвал мой метод журнала? - PullRequest
4 голосов
/ 30 декабря 2011

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

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

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

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

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

 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 );
     }
 }

Ответы [ 3 ]

8 голосов
/ 30 декабря 2011

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

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

и сохраните его в файле журнала.

0 голосов
/ 11 января 2012

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

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

0 голосов
/ 30 декабря 2011
public class Temp{
   static Thread t = null;
}

temp.t = Thread.currentThread ();

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