Я хочу иметь диагностический журнал, который создается несколькими задачами, управляющими данными. Эти задачи могут быть в нескольких потоках. Каждая задача должна записать элемент (возможно, с подэлементами) в журнал; войти и выйти быстро. Если бы это была ситуация с одной задачей, я бы использовал XMLStreamWriter , так как это кажется наилучшим соответствием для простоты / функциональности без необходимости хранить всплывающий XML-документ в памяти.
Но это не единственная задача, и я не уверен, как лучше всего убедиться, что это «потокобезопасный», где «потокобезопасность» в этом приложении означает, что каждый элемент журнала должен записываться в журнал правильно и последовательно (один за другим, без чередования).
Есть предложения? У меня есть смутное представление о том, что нужно использовать очередь элементов журнала (каждый из которых может быть быстро создан: мое приложение занято реальной работой, чувствительной к производительности), и у меня есть отдельный поток, который обрабатывает журнал. элементы и отправляет их в файл, чтобы регистрация не прерывала производителей.
Ведение журнала не обязательно должно быть XML, но я хочу, чтобы оно было структурированным и машиночитаемым.
edit: я помещаю "threadsafe" в кавычки. Log4j кажется очевидным выбором (новым для меня, но старым для сообщества), зачем изобретать велосипед ...