Самый простой способ - это записать имя или идентификатор текущего потока и данные, которые он обрабатывает.
Logger logger = Logger.getLogger(TestLogThreadName.class);
String currentThreadName = Thread.currentThread().getName();
logger.trace("processing data (" + data + ") with Thread " + currentThreadName);
Даже если это будет проще всего реализовать, это все равно зависит от размера данных, посколькусгенерированный файл журнала может быть огромным и трудным для чтения.
Какой аспект вы пытаетесь отслеживать, если это связано с аппаратными ресурсами, такими как процессор или память, возможно, вы можете попробовать использовать какой-нибудь инструмент, предоставляемый ОС.
обновлено:
сначала создайте класс утилит для записи журнала,
import org.apache.log4j.Logger;
public class LogThreadNameUtil{
static Logger logger = Logger.getLogger(LogThreadNameUtil.class);
public static void log(String threadName
, Prescription prescription){
//you have to get specific
//field value from prescription or override toString()
logger.trace("processing data (" + prescription
+ ") with Thread " + currentThreadName);
}
}
, затем вызовите утилиту ведения журнала у вашего бегуна,
public class PrescriptionThread implements Runnable{
private PrescriptionService presServ;
private Prescription pres ;
public PrescriptionThread(Prescription pres, PrescriptionService prescriptionService) {
this.pres = pres;
this.presServ = prescriptionService;
}
@Override
public void run() {
presServ.savePrescription(pres);
LogThreadNameUtil.log(Thread.currentThread().getName(), pres);
}
}