Предоставление логирования (отладки) контекста - PullRequest
3 голосов
/ 21 сентября 2011

У меня есть приложение, которое использует несколько различных классов Java и хотело бы иметь возможность предоставлять отладочный контекст для регистрации сообщений.

Этот (специфичный для приложения и данных) контекст (в основном, строка) будетсоздается или извлекается каким-либо образом каждым классом индивидуально и передается соответствующему вызову регистрации, например,

logger.debug(context + ", whatever error message");

Итак, мой вопрос: какой шаблон лучше всего использовать для реализации этой функциональности черезapplication?

Я имею в виду, что все классы, которые должны поддерживать контекстно-зависимое ведение журнала, реализуют интерфейс Java с несколькими подходящими методами, например

public interface ContextSensitive
{
    public String getContext();
    public String setContext();
}

, где setContext() метод будет полезен в случаях, когда объект (скажем) secondObject создается из объекта (скажем) firstObject, у которого есть контекст, а secondObject - нет.Итак, firstObject также будет делать что-то вроде

secondObject = new SecondObject();
secondObject.setContext(context);

Имеет ли смысл вышесказанное, или я должен сделать что-то лучше?

Альтернатива, которую я рассматривал, - написать оболочку для ведения журнала.библиотека, предлагающая эту функциональность, но я не вижу никакой ценности для этого подхода по сравнению с тем, который я описал выше, на основе интерфейса ContextSensitive.

Если есть какие-либо примеры проектов с открытым исходным кодом, которыепришлось решить ту же проблему, я был бы признателен за ссылку.

Большое спасибо!

Ответы [ 3 ]

3 голосов
/ 21 сентября 2011

Я подозреваю, что вы ищете что-то похожее на MDC (сопоставленный диагностический контекст), который является функцией каркасов log4j, logback и slf4j. Контекст может быть установлен только один раз перед вызовом метода, а затем может быть настроена структура ведения журнала для создания сообщений ведения журнала, включая поля из контекста.

1 голос
/ 21 сентября 2011

Какая информация используется для того, что вы хотите войти?

Если это для анализа производительности, взгляните на Каков наилучший инструмент / инфраструктура для макро-бенчмаркинга для измерения однопоточного сложного алгоритма в Java? , в списке есть некоторые инструменты, которые используют механизмы ведения журналов .

1 голос
/ 21 сентября 2011

Это прекрасный пример сквозной задачи , поэтому используйте AOP .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...