06-03-2013, 09:13 AM
Немного загрустив о L2 решил посмотреть как там использовалось логирование.
После чего был сильно опечален.
Давайте рассмотрим кусочек кода
А конкретнее эту строчку
А еще конкретнее эту:
Я конечно не знаю, что они там курили но это же полный пздц!!!
Рекомендую переписать немного код:
Сделать поле класса
После
дописать
строку
заменить на
Результат будет намного лучше.
п.с. сори, писал на быструю руку без IDE и по памяти. Если где то ошибка - сори.
Так же советую посмотреть исходники http://docs.oracle.com/javase/7/docs/api...atter.html этого класса для лучшего понимания как устроено логирование в Logger-е.
После чего был сильно опечален.
Давайте рассмотрим кусочек кода
Код:
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-е.