Добавление метода к объекту класса некоторой библиотеки - PullRequest
1 голос
/ 26 марта 2012

Я использую log4j для записи журнала моей программы.Код выглядит так:

static Logger logger = Logger.getLogger(MyClassName.class);
logger.error("This is error message");

Однако вместо использования error() я хочу реализовать свой собственный метод ошибок, добавив некоторую дополнительную информацию, например,

logger.searcherror("This is error message")     
void searcherror(String mes){
    logger.error("[search] "+mes)
}

Я реализовалэто с помощью шаблона прокси:

class Mylogger{
    private Logger logger = null;
    public MyLogger (Logger logger){
        this.logger = logger;
    }
    public void searcherror(String msg){
        logger.error("[search]"+msg);
    }
}

При использовании MyLogger при печати журнала с помощью параметра appender layout: %l возникает ошибка, которая сообщает мне номер строки этого журнала.Это напечатает номер строки метода searcherror() в MyLogger, а не фактическую строку, когда я вызываю Mylogger.serach("xxxxx"), я не знаю, как это исправить.Есть предложения?

1 Ответ

1 голос
/ 26 марта 2012

Вы не должны добавлять функциональность в сам логгер. Вместо этого реализуйте свой собственный (или даже настройте один существующий макет).

Посмотрите на этот документ: http://logging.apache.org/log4j/1.2/manual.html

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