2016-07-07 2 views
1

Есть ли способ отличить вход в журнал от класса?Как отличить регистрацию?

Единственное, что я в курсе, если регистрация происходит в начале/конце methodA вы можете фактор протоколирования в intermediare методы methodIntermediate, а затем вызвать methodA из methodIntermediate. На уровне класса вы можете использовать decorator и иметь все записи в декораторе. Но это не поможет в регистрации, которая находится в середине метода.

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

ответ

1

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

public class LogsAreBad { 
    private String msg = ""; 
    // helper method which is never called directly 
    private void helper() { 
     boolean result = doSomething(); 
     if (!result) { 
      msg += "something went wrong in helper();"; 
     } 
    } 

    private void resetLog() { 
     msg = ""; 
    } 

    public int method() { 
     resetLog(); 
     helper(); 
     msg += "Someone accessed method()"; 
     logger.log(msg); 
    } 
} 
+0

Регистрация записи выводится в черный ящик. Это делает то же самое по сути. Как это интересно? –

+0

@IraBaxter Я дал кавиту, что не видел, чтобы избежать записи информации о потоке кода, когда этот код действительно происходит. Мой ответ только освобождает необходимость использования фактического регистратора во всем классе. Я могу удалить этот ответ, если он морально вас оскорбляет. –

+0

Это не оскорбляет меня. Просто хочу, чтобы читатели поняли, что он говорит. С этими комментариями я в порядке. –