2016-06-23 5 views
0

Мы смотрим на переход к log4j из исходной структуры ведения журнала (с 90-х годов), и у меня возникли проблемы с настройкой шаблона в соответствии с существующими журналами.log4j PatternLayout с момента последнего журнала

Мы выводим каждую строку журнала время, прошедшее с предыдущей строки журнала. Это часто помогает нам определить, где задержка находится в клиентской системе без каких-либо вычислений. Я не могу понять, как это сделать без написания совершенно нового макета.

Можно ли это сделать с помощью PatternLayout?

ответ

0

Это не поддерживается log4j. Я предполагаю, что это связано с тем, что производительность, log4j имеет очень высокую пропускную способность, и такая функциональность вызывает значительное снижение масштабируемости.

Однако вы все еще можете добиться этого, обработав уже обработанный журнал, возможно, какой-нибудь эластичный или основанный на базе данных appender будет лучше.

+0

Это будет только удар производительности, если он должен быть абсолютно точным, не так ли? Рамки уже должны прочитать текущее время - для этого потребуется только один длинный номер, который хранится там, что сделает его изменчивым, или AtomicLong сделает его точным, но в противном случае он будет быстрым и почти всегда точным. – mjaggard

+0

@mjaggard: проблема в том, что сообщения должны быть отформатированы в правильном порядке, то же самое достигается дельта времени. Другими словами, меньше или больше ему пришлось бы синхронизировать один процессор, что повлияло бы на масштабируемость. –

+0

Опять же, разве это не важно, если вам нужна точность в миллисекундах. В противном случае данные будут в конечном итоге правильными - и в конечном итоге в этом случае будет очень быстро, потому что это произойдет, как только строка кэша процессора будет записана обратно в основную память? – mjaggard