[flutter_tools] switch order of injection (#61191)

Inject loggers in the right order, test WIP. Otherwise verbose machine would not get the AppRunLogger
diff --git a/packages/flutter_tools/lib/executable.dart b/packages/flutter_tools/lib/executable.dart
index c58ca5b..b0eb4ad 100644
--- a/packages/flutter_tools/lib/executable.dart
+++ b/packages/flutter_tools/lib/executable.dart
@@ -145,15 +145,22 @@
             outputPreferences: globals.outputPreferences,
           ),
         ))
-       else if (verbose && !muteCommandLogging)
-        Logger: () => VerboseLogger(StdoutLogger(
+       else if (runMachine && !verbose)
+        Logger: () => AppRunLogger(parent: StdoutLogger(
           timeoutConfiguration: timeoutConfiguration,
           stdio: globals.stdio,
           terminal: globals.terminal,
           outputPreferences: globals.outputPreferences,
         ))
-      else if (runMachine)
-        Logger: () => AppRunLogger(parent: StdoutLogger(
+       else if (runMachine && verbose)
+        Logger: () => AppRunLogger(parent: VerboseLogger(StdoutLogger(
+          timeoutConfiguration: timeoutConfiguration,
+          stdio: globals.stdio,
+          terminal: globals.terminal,
+          outputPreferences: globals.outputPreferences,
+        )))
+       else if (verbose && !muteCommandLogging)
+        Logger: () => VerboseLogger(StdoutLogger(
           timeoutConfiguration: timeoutConfiguration,
           stdio: globals.stdio,
           terminal: globals.terminal,
diff --git a/packages/flutter_tools/test/integration.shard/command_output_test.dart b/packages/flutter_tools/test/integration.shard/command_output_test.dart
index f93e91d..0b79d94 100644
--- a/packages/flutter_tools/test/integration.shard/command_output_test.dart
+++ b/packages/flutter_tools/test/integration.shard/command_output_test.dart
@@ -2,11 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+import 'package:flutter_tools/src/base/file_system.dart';
 import 'package:flutter_tools/src/base/io.dart';
 import 'package:flutter_tools/src/globals.dart' as globals;
 import 'package:process/process.dart';
 
 import '../src/common.dart';
+import 'test_utils.dart';
 
 void main() {
   test('All development tools and deprecated commands are hidden and help text is not verbose', () async {
@@ -54,15 +56,34 @@
   });
 
   test('flutter run --machine uses AppRunLogger', () async {
-    final String flutterBin = globals.fs.path.join(getFlutterRoot(), 'bin', 'flutter');
-    final ProcessResult result = await const LocalProcessManager().run(<String>[
-      flutterBin,
-      'run',
-      '--machine',
-      '-v',
-    ]);
+    final Directory directory = createResolvedTempDirectorySync('flutter_run_test.')
+      .createTempSync('_flutter_run_test.')
+      ..createSync(recursive: true);
 
-    expect(result.stdout, isNotEmpty);
+    try {
+      directory
+        .childFile('pubspec.yaml')
+        .writeAsStringSync('name: foo');
+      directory
+        .childFile('.packages')
+        .writeAsStringSync('\n');
+      directory
+        .childDirectory('lib')
+        .childFile('main.dart')
+        .createSync(recursive: true);
+      final String flutterBin = globals.fs.path.join(getFlutterRoot(), 'bin', 'flutter');
+      final ProcessResult result = await const LocalProcessManager().run(<String>[
+        flutterBin,
+        'run',
+        '--show-test-device', // ensure command can fail to run and hit injection of correct logger.
+        '--machine',
+        '-v',
+        '--no-resident',
+      ], workingDirectory: directory.path);
+      expect(result.stderr, isNot(contains('Oops; flutter has exited unexpectedly:')));
+    } finally {
+      directory.deleteSync(recursive: true);
+    }
   });
 
   test('flutter attach --machine uses AppRunLogger', () async {
@@ -74,7 +95,7 @@
       '-v',
     ]);
 
-    expect(result.stdout, isNotEmpty);
+    expect(result.stderr, contains('Target file')); // Target file not found, but different paths on Windows and Linux/macOS.
   });
 
   test('flutter build aot is deprecated', () async {