Это довольно эффективно, но в определенных случаях, учитывая, что есть несколько потоков, это на самом деле будет иметь разрушительные последствия для системных ресурсов, особенно если вы входите в один файл. Но это можно решить, сократив журналирование до определенных потоков, которые можно переключать во время выполнения.
моя реализация будет: -
class Tracer{ void informCall(Object...callArgs){ meth=TraceUtils.getPreviousMethod(); if(noCondition||tracerCodition.trace(Trace.getCallerStackTraceElement())){ //since trace method can know which thread we are in that is not a necessary argument TraceLogger.inform(TraceType.Method,meth.traceString()+"/nargs:/n"+TraceUtils.argsString(callArgs)); } } }
Примечание: указание условия для трассировки увеличивает эффективность отладка, а также концентрирует поиск в определенных точках, например, может быть, задан метод отслеживания для выполнения до достижения определенного условия, если этот конкретный метод завершается слишком быстро, это будет означать, что отслеживание не будет эффективным, особенно в ситуации, когда существует преднамеренное состояние гонки ресурсов или журналов записывается в файл, но установка условия трассировки для отслеживания только определенного количества вызовов метода или через определенные промежутки времени поможет повысить эффективность.
Это звучит изоморфным к отслеживанию информации об отмене. Обычный шаблон для этого является вариантом Шаблона "команда": Вы сохраняете очередь в порядке времени предыдущих состояний с операцией для восстановления к предыдущему состоянию.