こんなん考えてみた。
public static <R, T, throws E>
R log(T t, Class<T> clazz, { T => R throws E } block) throws E {
  T proxy = Proxy.newProxyInstance(t.getClass().getClassLoader(),
                new Class[]{ clazz },
                new InvocationHandler(Object obj, Method method, Object args)){
                  StringBuilder sb = new StringBuilder(obj + " : " +method + " : ");
                  for(Object o : args){ sb.append(o).append(" , "); }
                  System.out.println(sb);
                  return method.invoke( obj, args );
                }
  System.out.println("Logging Start : " + t );
  R r = block.invoke(proxy);
  System.out.println("Logging End : " + t );
  return r;
}

で、使い方
log(List logList : list, List.class){
  //処理
}

これでこのブロックの中でだけ特定の変数のメソッド呼び出しのログが取れるはず
ちょっといじれば特定のアノテーションのついているメソッドの呼び出しだけに反応するようにもできると思う