Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Логирование в L2J
#1
Немного загрустив о L2 решил посмотреть как там использовалось логирование.
После чего был сильно опечален.


Давайте рассмотрим кусочек кода
Код:
public class FileLogFormatter extends Formatter
{
    private static final String _ = "\t";
    private final SimpleDateFormat dateFmt = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss,SSS");
    
    @Override
    public String format(LogRecord record)
    {
        return StringUtil.concat(dateFmt.format(new Date(record.getMillis())), _, record.getLevel().getName(), _, String.valueOf(record.getThreadID()), _, record.getLoggerName(), _, record.getMessage(), Config.EOL);
    }
}

А конкретнее эту строчку
Код:
return StringUtil.concat(dateFmt.format(new Date(record.getMillis())), _, record.getLevel().getName(), _, String.valueOf(record.getThreadID()), _, record.getLoggerName(), _, record.getMessage(), Config.EOL);

А еще конкретнее эту:
Код:
new Date(record.getMillis()))

Я конечно не знаю, что они там курили но это же полный пздц!!!

Рекомендую переписать немного код:
Сделать поле класса
Код:
private final Date date = new Date();
После
Код:
public String format(LogRecord record)
    {
дописать
Код:
date.setTime(record.getMillis());

строку
Код:
dateFmt.format(new Date(record.getMillis()))
заменить на
Код:
dateFmt.format(date)

Результат будет намного лучше.
п.с. сори, писал на быструю руку без IDE и по памяти. Если где то ошибка - сори.

Так же советую посмотреть исходники http://docs.oracle.com/javase/7/docs/api...atter.html этого класса для лучшего понимания как устроено логирование в Logger-е.
Ответ


Сообщения в этой теме
Логирование в L2J - от ALF. - 06-03-2013, 09:13 AM

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)