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?
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.
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.
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;
}
}
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é.
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.
Veuillez trouver les étapes ci-dessous.
CMD + <
Run
dans la partie gauche.Pour plus d'informations, veuillez trouver la représentation GIF ci-dessous.
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.
À 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 :]
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)
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)
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 .
Cette solution a fonctionné pour moi:
⌘
+ /
).Cela supprimera toutes les données de débogage ainsi que vos NSLogs.
Pour filtrer uniquement vos instructions NSLog:
NSLog(@"^ Test Log")
Voici ce que vous devriez obtenir: