У нас есть система, которая использует потоки, чтобы одновременно параллельно обрабатывать различные биты функциональности. Мы хотели бы найти способ связать все записи журнала для конкретной «транзакции» вместе. Как правило, можно использовать 'threadName', чтобы собрать их вместе, но ясно, что это не удается в многопоточной ситуации.Запись в Java по нескольким потокам
За исключением передачи «транзакционного ключа» по каждому вызову метода, я не вижу способа связать их вместе. И передача ключа в каждый метод просто уродливая.
Кроме того, мы как бы привязаны к протоколу Java, так как наша система построена на модифицированной версии. Таким образом, меня бы интересовали другие платформы для примеров того, что мы могли бы попробовать, но коммутационные платформы маловероятны.
Есть ли у кого-нибудь предложения?
Спасибо,
Питер
EDIT: К сожалению, у меня нет контроля над созданием нитей, как это все обрабатывается пакет рабочего процесса. В противном случае идея кэширования идентификатора один раз для каждого потока (на ThreadLocal, может быть?), А затем установка того, что на новые потоки по мере их создания является хорошей идеей. Я могу попробовать все равно.
Вы можете установить непосредственно перед/сбросить идентификатор потока и после вызова на параллельные биты работы (попробуйте /, наконец, рисунок), и а затем использовать это для ведения журнала? –