web-dev-qa-db-fra.com

Masquer les étranges journaux Xcode indésirables

Lors de l'utilisation de Xcode 8+ et de la création d'un nouveau projet vierge, 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 à gérer?

664
Hans Knöchel

Essaye ça:

1- Depuis le menu Xcode ouvert: Produit> Schéma> Modifier le schéma

2- Sur votre environnement Variables set OS_ACTIVITY_MODE = disable

Screenshot

1463
iDevzilla

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

  1. Sous Produit> Schéma> Modifier le schéma ...> Exécuter (Debug), définissez la variable d'environnement OS_ACTIVITY_MODE sur $ {DEBUG_ACTIVITY_MODE} afin qu'elle ressemble à ceci:

enter image description here

  1. Accédez aux paramètres de construction de votre projet, puis cliquez sur + pour ajouter un paramètre défini par l'utilisateur nommé DEBUG_ACTIVITY_MODE. Développez ce paramètre et cliquez sur le signe + en regard de Debug pour ajouter une valeur spécifique à la plate-forme. Sélectionnez le menu déroulant et remplacez-le par "N'importe quel simulateur iOS". Puis définissez sa valeur sur "disable" pour ressembler à ceci:

enter image description here

347
cduhn

OS_ACTIVITY_MODE n'a pas fonctionné pour moi (il peut être parce que j'ai tapé 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, régler OS_ACTIVITY_DT_MODE sur "NO" dans les variables d’environnement (la méthode de l’interface graphique expliquée à la capture d'écran Schemes dans la réponse principale) me le permet.

Dans la mesure où NSLog est le dépotoir des messages système, des erreurs et de votre propre débogage: une véritable approche de journalisation est de toute façon appelée, par exemple. https://github.com/fpillet/NSLogger .

OU

Buvez le nouveau Kool-Aid: http://asciiwwdc.com/2016/sessions/721https://developer.Apple.com/videos/play/wwdc2016/721/ Il n'est pas étonnant qu'il y ait des problèmes après la refonte complète de l'API de journalisation.

ADDENDUM

Quoi qu'il en soit, NSLog est juste une cale:

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

NSLog/CFLog

NSLog est maintenant juste une alternative à os_log dans la plupart des cas.

C’est seulement logique maintenant de citer le source pour l’autre variable env. Un endroit assez disparate, cette fois de Apple internes. Vous ne savez pas pourquoi ils se chevauchent. [Commentaire incorrect sur NSLog supprimé]

[Edité le 22 septembre]: 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;
    }
}
81
BaseZen

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

Pour que le simulateur Xcode 8 iOS ne se connecte pas de manière insensée, définissez une variable d'environnement OS_ACTIVITY_MODE = disable dans votre schéma de débogage.

Ça a marché.

63
Peter Smith

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

** EDIT 8/1/16: Cela a été reconnu dans le notes de publication pour Xcode 8 Beta 4 (8S188o) comme un problème persistant .

Problèmes connus dans Xcode 8 beta 4 - IDE

Débogage

• Xcode Debug Console affiche une journalisation supplémentaire à partir des infrastructures système lors du débogage des applications dans le simulateur. (27331147, 26652255)

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

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

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

  • Utilisez ensuite la zone de recherche en bas à droite du volet de la console pour filtrer les journaux de la console en saisissant le caractère spécial que vous avez choisi pour que la console affiche les journaux de votre choix comme prévu.

console

33
Pez

Veuillez trouver les étapes ci-dessous.

  1. Sélectionnez Product => Scheme => Edit Scheme ou utilisez le raccourci: CMD + <
  2. Sélectionnez l'option Run dans la partie gauche.
  3. Dans la section Variables d'environnement, ajoutez la variable OS_ACTIVITY_MODE = disable

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

Edit Scheme

33

Ma solution consiste à utiliser la commande du débogueur et/ou Message de journal dans points d'arrêt.

enter image description here

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

enter image description here

22
mrahmiao

Bien. Il semble y avoir beaucoup de bruit autour de celui-ci, alors je vais vous donner un moyen de le persister sans utiliser ce stratagème. Je vais aborder le simulateur iOS en particulier, mais cela pourrait également devoir être appliqué au simulateur de télé qui se trouve dans un répertoire différent.

Le problème à l'origine de tout cela est la pliste située dans le répertoire Xcode. Il y a un processus qui se lance appelé configd_sim au démarrage du Sim, qui lit les plists et imprime des informations de débogage si ces derniers spécifient qu'ils doivent être consignés.

Les plists sont situés ici:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Preferences/Logging/Subsystems

Si vous jouez avec une version bêta, notez que le répertoire sera différent.

Vous verrez de nombreux plists dans ce répertoire. Maintenant, construisez et exécutez votre application et observez les journaux. Vous recherchez le contenu immédiatement suivi du sous-système : . C'est le nom qui suit immédiatement celui-ci qui représente le plist problématique correspondant.

enter image description here

À partir de là, modifiez le plist pour masquer la clé/valeur de débogage [Niveau], qui est un dictionnaire contenant la clé "Enable" => "Default", ... ou supprimez tout simplement le plist. Notez que vous devez être root pour effectuer l’un ou l’autre, car ils sont situés dans l’application Xcode.

la commande plutil -p pourrait également vous être utile. c'est à dire.

plutil -p /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/System/Library/Preferences/Logging/Subsystems/com.Apple.BackBoardServices.fence.plist

Cela m'a donné l'un des plists problématiques qui contenaient:

{ "DEFAULT-OPTIONS" => { "Level" => { "Enable" => "Default" }}}

Bonne chance :]

14
Sozin's Comet

Ceci est lié à un problème connu de journalisation trouvé dans = Notes de publication de Xcode 8 Beta (également demandé à un ingénieur de WWDC).

Lors du débogage des applications WatchOS dans le simulateur Watch, le système d'exploitation peut générer une quantité excessive de journalisation inutile. (26652255)

Il n'y a actuellement aucune solution de contournement disponible, vous devez attendre une nouvelle version de Xcode.

EDIT 7/5/16: Ceci est censé être corrigé à partir de Xcode 8 Beta 2:

Résolu dans Xcode 8 beta 2 - IDE

Débogage

  • Lors du débogage d'une application sur le simulateur, les journaux sont visibles. (26457535)

Notes de version de Xcode 8 Beta 2

13
JAL

Ce n'est plus un problème dans xcode 8.1 (version testée 8.1 beta (8T46g)) . Vous pouvez supprimer la variable d'environnement OS_ACTIVITY_MODE de votre schéma.

https://developer.Apple.com/go/?id=xcode-8.1-beta-rn

Débogage

• La console de débogage Xcode n'affiche plus de journalisation supplémentaire à partir des infrastructures système lors du débogage des applications dans le simulateur. (26652255, 27331147)

7
mriddle89

Dans Xcode 10 , la variable OS_ACTIVITY_MODE avec disable (ou default) désactive également la valeur NSLog peu importe ce que.

Donc, si vous voulez vous débarrasser du bruit de la console mais pas de vos propres journaux, vous pouvez essayer le bon vieux printf("") au lieu du NSLog car il n'est pas affecté par le OS_ACTIVITY_MODE = disable.

Mais mieux vaut consulter la nouvelle os_log API ici .

3
Jakub Truhlář

Cette solution a fonctionné pour moi:

  1. Lancer l'application dans le simulateur
  2. Ouvrez le journal système ( + /).

Cela supprimera toutes les données de débogage ainsi que vos NSLogs.

Pour filtrer uniquement vos instructions NSLog:

  1. Préfixez chacun avec un symbole, par exemple: NSLog(@"^ Test Log")
  2. Filtrer les résultats en utilisant le moteur de recherche en haut à droite, "^" dans le cas ci-dessus

Voici ce que vous devriez obtenir:

Screenshot of console

1
psobko