Question Cacher d'étranges journaux Xcode non désirés


Lors de l'utilisation de Xcode 8+ et de la création d'un nouveau projet vide, les journaux suivants apparaissent lors de l'exécution de l'application:

2016-06-13 16:33:34.406093 TestiOS10[8209:100611] bundleid: com.appc.TestiOS10, enable_level: 0, persist_level: 0, propagate_with_activity: 0
2016-06-13 16:33:34.406323 TestiOS10[8209:100607] Created DB, header sequence number = 248
2016-06-13 16:33:34.409564 TestiOS10[8209:100611] subsystem: com.apple.UIKit, category: HIDEvents, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0
2016-06-13 16:33:34.504117 TestiOS10[8209:100607] Created DB, header sequence number = 248
2016-06-13 16:33:34.548023 TestiOS10[8209:100607] subsystem: com.apple.BaseBoard, category: MachPort, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0
2016-06-13 16:33:34.568458 TestiOS10[8209:100608] subsystem: com.apple.FrontBoard, category: Common, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0

Peut-être que quelqu'un a déjà trouvé une configuration pour cela?


597
2018-06-13 23:39


origine


Réponses:


Essaye ça:

1- Du menu Xcode ouvert: Produit> Schéma> Edit Scheme

2- Sur votre ensemble de variables d'environnement OS_ACTIVITY_MODE = disable

Screenshot


1327
2017-09-13 02:11



Construire sur l'original tweet de @rustyshelf, et une réponse illustrée de iDevzilla, voici une solution qui réduit le bruit du simulateur sans désactiver la sortie NSLog de l'appareil.

  1. Sous Product> Scheme> Edit Scheme ...> Run (Debug), définissez la variable d'environnement OS_ACTIVITY_MODE sur $ {DEBUG_ACTIVITY_MODE} pour qu'elle ressemble à ceci:

enter image description here

  1. Accédez aux paramètres de génération de votre projet et cliquez sur + pour ajouter un paramètre défini par l'utilisateur nommé DEBUG_ACTIVITY_MODE. Développez ce paramètre et cliquez sur + en regard de Déboguer pour ajouter une valeur spécifique à la plate-forme. Sélectionnez la liste déroulante et remplacez-la par "Any iOS Simulator". Ensuite, définissez sa valeur sur "disable" pour qu'il ressemble à ceci:

enter image description here


304
2017-09-23 01:09



OS_ACTIVITY_MODE n'a pas fonctionné pour moi (il mai ont été parce que j'ai typo'd disable comme disabled, mais n'est-ce pas plus naturel?!?), ou du moins n'a pas empêché beaucoup de messages. Alors, voici le vrai problème avec les variables d'environnement.

https://llvm.org/svn/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp

lldb_private::Error
PlatformDarwin::LaunchProcess(lldb_private::ProcessLaunchInfo &launch_info) {
  // Starting in Fall 2016 OSes, NSLog messages only get mirrored to stderr
  // if the OS_ACTIVITY_DT_MODE environment variable is set.  (It doesn't
  // require any specific value; rather, it just needs to exist).
  // We will set it here as long as the IDE_DISABLED_OS_ACTIVITY_DT_MODE flag
  // is not set.  Xcode makes use of IDE_DISABLED_OS_ACTIVITY_DT_MODE to tell
  // LLDB *not* to muck with the OS_ACTIVITY_DT_MODE flag when they
  // specifically want it unset.
  const char *disable_env_var = "IDE_DISABLED_OS_ACTIVITY_DT_MODE";
  auto &env_vars = launch_info.GetEnvironmentEntries();
  if (!env_vars.ContainsEnvironmentVariable(disable_env_var)) {
    // We want to make sure that OS_ACTIVITY_DT_MODE is set so that
    // we get os_log and NSLog messages mirrored to the target process
    // stderr.
    if (!env_vars.ContainsEnvironmentVariable("OS_ACTIVITY_DT_MODE"))
      env_vars.AppendArgument(llvm::StringRef("OS_ACTIVITY_DT_MODE=enable"));
  }

  // Let our parent class do the real launching.
  return PlatformPOSIX::LaunchProcess(launch_info);
}

Donc le réglage OS_ACTIVITY_DT_MODE à "NON" dans les variables d'environnement (la méthode GUI expliquée dans la capture d'écran des schémas dans la réponse principale) le fait fonctionner pour moi.

Autant que NSLog étant le dépotoir des messages système, des erreurs et de votre propre débogage: une approche de journalisation réelle est probablement appelée de toute façon, par ex. https://github.com/fpillet/NSLogger .

OU

Buvez le nouveau Kool-Aid: http://asciiwwdc.com/2016/sessions/721  https://developer.apple.com/videos/play/wwdc2016/721/ Il n'est pas surprenant qu'il y ait quelques accrocs après la révision de l'API de journalisation complète.

ADDENDA

En tous cas, NSLog est juste une cale:

https://developer.apple.com/library/content/releasenotes/Miscellaneous/RN-Foundation-OSX10.12/

NSLog / CFLog

NSLog est maintenant juste un shim à os_log dans la plupart des circonstances.

Cela n'a de sens que de citer la source pour l'autre variable env. Tout à fait un endroit disparate, cette fois des internes Apple. Je ne sais pas pourquoi ils se chevauchent. [Commentaire incorrect à propos de NSLog enlevé]

[Édité 22 sept]: Je me demande ce que "release" et "stream" font différemment de "debug". Pas assez de source.

https://github.com/macosforge/libdispatch/blob/8e63547ea4e5abbfe55c0c3064181c4950a791d3/src/voucher.c

e = getenv("OS_ACTIVITY_MODE");
if (e) {
    if (strcmp(e, "release") == 0) {
        mode = voucher_activity_mode_release;
    } else if (strcmp(e, "debug") == 0) {
        mode = voucher_activity_mode_debug;
    } else if (strcmp(e, "stream") == 0) {
        mode = voucher_activity_mode_stream;
    } else if (strcmp(e, "disable") == 0) {
        mode = voucher_activity_mode_disable;
    }
}

70
2017-09-19 20:04



Un tweet avait la réponse pour moi - https://twitter.com/rustyshelf/status/775505191160328194

Pour empêcher le simulateur Xcode 8 iOS de se connecter comme un fou, définissez une variable d'environnement OS_ACTIVITY_MODE = disable dans votre schéma de débogage.

Ça a marché.


63
2017-09-13 05:52



Ce n'est pas encore corrigé dans Xcode Version 8.0 beta 2 (8S162m) pour moi et des journaux supplémentaires apparaissent également dans la console Xcode

** EDIT 01/08/16: Cela a été reconnu dans le notes de version pour Xcode 8 Beta 4 (8S188o) en tant que problèmes persistants.

Problèmes connus dans Xcode 8 beta 4 - IDE

Débogage

• Console de débogage Xcode affiche la journalisation supplémentaire à partir des cadres système lorsque    débogage des applications dans le simulateur. (27331147, 26652255)

On peut supposer que cela sera résolu par la version GM. Jusque-là la patience et bien que pas idéal mais une solution de contournement que j'utilise est ci-dessous ...

Similaire à la réponse précédente, je dois:

  • préfixe mes journaux d'impression avec une sorte de caractère spécial (par exemple * ou ^ ou! etc etc)

  • Ensuite, utilisez la zone de recherche en bas à droite du volet de la console pour filtrer les journaux de ma console en entrant le caractère spécial que vous avez choisi pour que la console affiche les journaux d'impression comme prévu

console


32
2017-07-06 04:54



Veuillez trouver les étapes ci-dessous.

  1. Sélectionnez Product => Scheme => Edit Scheme ou utilisez un raccourci: CMD + <
  2. Sélectionnez le Run option du côté gauche.
  3. Dans la section Variables d'environnement, ajoutez la variable OS_ACTIVITY_MODE = désactiver

Pour plus d'informations, veuillez trouver la représentation GIF ci-dessous.

Edit Scheme


28
2017-11-07 11:14



Ma solution est d'utiliser le commande de débogueur et / ou Message de journal dans les points d'arrêt.

enter image description here

Et changer la sortie de la console de Toutes les sorties à Sortie du débogueur comme

enter image description here


20
2017-07-07 02:47