Ukryj dziwne niechciane dzienniki Xcode

Podczas korzystania z Xcode 8+ i tworzenia nowego pustego projektu, następujące dzienniki pojawiają się podczas uruchamiania aplikacji:

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

Może ktoś już znalazł konfigurację do obsługi tego?

Author: Hans Knöchel, 2016-06-14

11 answers

Spróbuj tego:

1-z menu Xcode otwórz: produkt > schemat > Edycja schematu

2-na Twoim zestawie zmiennych środowiskowychOS_ACTIVITY_MODE = disable

Zrzut ekranu

 1343
Author: iDevzilla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-01 14:38:00

Bazując na oryginalnym tweeciez @rustyshelf i zilustrowanej odpowiedzi z idevzilli, oto rozwiązanie, które wycisza hałas z symulatora bez wyłączania wyjścia NSLog z urządzenia.

  1. W Sekcji Produkt > Schemat > Edycja Schematu... > Uruchom (Debug), Ustaw zmienną środowiskową OS_ACTIVITY_MODE na ${DEBUG_ACTIVITY_MODE}, aby wyglądała tak:

Tutaj wpisz opis obrazka

  1. przejdź do ustawień budowania projektu i kliknij +, aby dodać Ustawienie zdefiniowane przez użytkownika o nazwie DEBUG_ACTIVITY_MODE. Rozwiń to ustawienie i kliknij + obok opcji Debuguj, aby dodać wartość specyficzną dla platformy. Wybierz listę rozwijaną i zmień ją na "dowolny symulator iOS". Następnie ustaw jego wartość na "disable", aby wyglądało to tak:

Tutaj wpisz opis obrazka

 308
Author: cduhn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-15 20:29:37

OS_ACTIVITY_MODE nie działał dla mnie (to może było, ponieważ literowałbym disable jako disabled, ale czy to nie jest bardziej naturalne?!?), a przynajmniej nie przeszkodziło to wielu wiadomościom. Oto prawdziwa sprawa ze zmiennymi środowiskowymi.

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);
}

Więc ustawienie OS_ACTIVITY_DT_MODE na "nie" w zmiennych środowiskowych (metoda GUI wyjaśniona w schematach screenshot w głównej odpowiedzi) dla mnie to działa.

Jeśli chodzi o to, że NSLog jest podłożem dla komunikatów systemowych, błędów i własnego debugowania: prawdziwe podejście logowania jest prawdopodobnie wymagane i tak, np. https://github.com/fpillet/NSLogger .

lub

Wypij nowy Kool-Aid: http://asciiwwdc.com/2016/sessions/721 https://developer.apple.com/videos/play/wwdc2016/721 / Nic dziwnego, że są pewne zaczepy po remoncie całego logowanie API.

Dodatek

W każdym razie, NSLog jest tylko shim:

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

NSLog / CFLog

NSLog jest teraz tylko podpowiedzią do os_log w większości sytuacji.

Teraz ma sens tylko cytowanie źródła dla drugiej zmiennej env. Całkiem odmienne miejsce, tym razem od Apple internals. Nie wiem, dlaczego się nakładają. [Niepoprawny komentarz o NSLog usunięty]

[Edited 22 Sep]: ciekawe co "release" I "stream" robią inaczej niż "debug". Za mało źródeł.

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;
    }
}
 72
Author: BaseZen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-23 18:28:38

A tweet has the answer for me - https://twitter.com/rustyshelf/status/775505191160328194

Aby zatrzymać symulator Xcode 8 iOS z logowania jak szalony, ustawić zmienną środowiskową OS_ACTIVITY_MODE = disable w schemacie debugowania.

Zadziałało.

 63
Author: Peter Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-13 05:52:07

to jest nadal nie naprawione w Xcode wersja 8.0 beta 2 (8s162m) dla mnie i dodatkowe logi pojawiają się również w konsoli Xcode

W przeciwieństwie do Xcode 8, Xcode 8 Beta 4 (8s188o), Xcode 8 Beta 4 (8s188o), Xcode 8 Beta 4 (8s188o), Xcode 8 Beta 4 (8s188o), Xcode 8 Beta 4 (8s188o), Xcode 8 Beta 4 (8s188o), Xcode 8 Beta 4 (8s188o

Znane problemy w Xcode 8 beta 4-IDE

Debugowanie

* Xcode Debug Console wyświetla dodatkowe logowanie z RAM systemowych, gdy debugowanie aplikacji w Symulator. (27331147, 26652255)

Prawdopodobnie zostanie to rozwiązane przez wydanie GM. Do tego czasu cierpliwość i chociaż nie jest idealna, ale obejście, którego używam, znajduje się poniżej...

Podobna do poprzedniej odpowiedzi:

  • Przedrostek moje dzienniki wydruku z jakimś znakiem specjalnym (np. * Lub ^ lub ! etc etc)

  • Następnie użyj pola wyszukiwania w prawym dolnym rogu panelu konsoli, aby filtrować dzienniki konsoli, wpisując wybraną ofertę specjalną znak, aby konsola wyświetlała moje dzienniki wydruku zgodnie z przeznaczeniem

konsola

 32
Author: Pez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-01 20:42:25

Proszę znaleźć poniższe kroki.

  1. Wybierz produkt = > schemat = > Edytuj schemat lub użyj skrótu : CMD + <
  2. Wybierz opcję Run z lewej strony.
  3. w sekcji zmienne środowiskowe dodaj zmienną OS_ACTIVITY_MODE = disable

Aby uzyskać więcej informacji, zapoznaj się z poniższą reprezentacją GIF.

Edytuj Schemat

 30
Author: Ramkrishna Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-07 11:14:28

Moim rozwiązaniem jest użycie polecenia debuggera i/lub log Message w punktach przerwania.

Tutaj wpisz opis obrazka

I zmienić wyjście konsoli z All Output na debugger Output Jak

Tutaj wpisz opis obrazka

 20
Author: mrahmiao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-07 02:47:05

Jest to związane ze znanym problemem z logowaniem znalezionym w Xcode 8 Beta Release Notes (zapytał również inżyniera w WWDC).

Podczas debugowania aplikacji WatchOS w symulatorze zegarka System Operacyjny może powodować nadmierne ilość nieprzydatnego logowania. (26652255)

Obecnie nie ma obejścia, musisz poczekać na nową wersję Xcode.

Jest to możliwe dzięki temu, że Xcode 8 Beta 2 nie jest już dostępny.]}

Rozwiązany w Xcode 8 beta 2-IDE

Debugowanie

  • podczas debugowania aplikacji na symulatorze, logi są widoczne. (26457535)

Xcode 8 Beta 2 Release Notes

 13
Author: JAL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-05 18:52:09

W porządku. Wygląda na to, że jest w tym sporo zamieszania, więc dam wam sposób na przetrwanie tego bez użycia tej sztuczki. Zwrócę się konkretnie do symulatora iOS, ale może to również wymagać zastosowania do karty SIM TV, która znajduje się w innym katalogu.

Problemem, który powoduje wszystkie te rzeczy są plisty znajdujące się w katalogu Xcode. Istnieje proces, który zostanie uruchomiony o nazwie configd_sim, gdy uruchomi się Sim, który odczytuje plisty in i wyświetla informacje debugowania, jeśli plisty określają, że mają być zalogowane.

Plisty znajdują się tutaj:

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

Jeśli grasz w betę, zwróć uwagę, że katalog będzie inny.

Zobaczysz liczne plisty w tym katalogu. Teraz Zbuduj i uruchom aplikację i obserwuj dzienniki. Szukasz treści bezpośrednio po subsystem: część. To nazwa zaraz po tym oznacza to odpowiedni problematyczny plist.

Tutaj wpisz opis obrazka

Stamtąd albo zmodyfikuj plist, aby wyeliminować debugowanie [poziom] klucz/wartość, który jest słownikiem zawierającym "Enable" => "Default" klucz/wartość... lub po prostu usunąć plist. Zauważ, że musisz być root, aby zrobić jedną z nich, ponieważ znajdują się one w aplikacji Xcode.

Polecenie plutil -p może być również przydatne dla ciebie. tj.

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

To dało mi jeden z problematycznych plisty, które zawierały:

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

Powodzenia:]

 13
Author: Sozin's Comet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-18 15:05:10

To nie jest już problem w xcode 8.1 (Testowana wersja 8.1 beta (8t46g)). Możesz usunąć zmienną środowiskową OS_ACTIVITY_MODE ze swojego schematu.

Https://developer.apple.com/go/?id=xcode-8.1-beta-rn

Debugowanie

• konsola debugowania Xcode nie wyświetla już dodatkowego logowania z systemu frameworków podczas debugowania aplikacji w symulatorze. (26652255, 27331147)

 7
Author: mriddle89,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-06 03:59:18

To rozwiązanie działa dla mnie:

  1. Uruchom aplikację w symulatorze
  2. Otwórz dziennik systemowy( + /)

To usunie wszystkie dane debugowania, a także Twoje Nslogi.

Do filtrowania tylko wypowiedzi NSLog:

  1. prefiks każdy z symbolem, na przykład: NSLog(@"^ Test Log")
  2. Filtruj wyniki za pomocą pola wyszukiwania w prawym górnym rogu, " ^ " w przypadku powyżej

To jest to, co powinieneś get:

Zrzut ekranu konsoli

 1
Author: psobko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-05 14:00:39