Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Unified Logging
Search
Jelle Vandebeeck
December 21, 2018
Technology
1.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Unified Logging
Jelle Vandebeeck
December 21, 2018
More Decks by Jelle Vandebeeck
See All by Jelle Vandebeeck
RubyMotion
fousa
1
110
Git
fousa
1
150
Heroku
fousa
0
150
Cappuccino
fousa
0
130
Other Decks in Technology
See All in Technology
More Freedom on the Same Shared GPU Cluster: A Small Team’s Experience with vCluster
nttcom
0
140
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
10
3.2k
OSC2026on_the-world-is-waiting-for-your-voice.pdf
naruoga
0
360
全社共通データ基盤をつくる。ソニーのDatabricks活用とデータガバナンス設計の裏側
sony
0
430
検証フェーズはAIの回答を判断するための学習機会
toru_kubota
2
510
React Nativeでの OTA Updateって、 どう説明する?
ichiki1023
0
150
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
2
1.4k
ビジネスを止めない技術的負債の返済のための戦略とその手法 - 技術的負債と向き合う / Complexity and Simplicity
soudai
PRO
3
650
Snapshot Testing in Practice: Predictable and Reliable SwiftUI Views
fespinoza
0
140
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
160
20260930_Gemma4_Hands-on
tsho
0
230
freeeらしさをAIとともに作る / Creating the freee Experience with AI
ymrl
0
210
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
It's Worth the Effort
3n
188
29k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
490
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Odyssey Design
rkendrick25
PRO
2
860
WCS-LA-2024
lcolladotor
0
850
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
58k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Transcript
UNIFIED LOGGING JELLE VANDEBEECK / ICAPPS 1
Why? ๏ Improved debugging during development ๏ Track down crashes
in asynchronous code ๏ Improved privacy JELLE VANDEBEECK / ICAPPS 2
Legacy NSLog(@"Hello!") asl_log_message syslog JELLE VANDEBEECK / ICAPPS 3
Legacy ๏ Visible in Xcode ๏ Visible in the Console.app
application JELLE VANDEBEECK / ICAPPS 4
Swift print("Hello!") ๏ Visible in Xcode ๏ Not visible in
the Console.app application JELLE VANDEBEECK / ICAPPS 5
New API Exists since iOS 10... ! JELLE VANDEBEECK /
ICAPPS 6
os_log import os os_log(.debug, "Hello") os_log(.info, "Hello") os_log(.default, "Hello") os_log(.error,
"Hello") os_log(.fault, "Hello") JELLE VANDEBEECK / ICAPPS 7
Logging Levels Level Enabled Initially stored On bu!er full Debug
! ! ! Info ✅ Memory ! 1 Default ✅ Memory Disk Error ✅ Disk Disk Fault ✅ Disk Disk 1 Except when an error occurs JELLE VANDEBEECK / ICAPPS 8
To disk ๏ You can find a .tracev3 file that
contains the logs inside of /var/db/diagnostics. ๏ Data stores instead of text-based files. ๏ When date storage is exceeded oldest messages are purged JELLE VANDEBEECK / ICAPPS 9
Usage ๏ Level: Debug ๏ High volume debugging during development
๏ Console.app: ⚫ JELLE VANDEBEECK / ICAPPS 10
Usage ๏ Level: Info ๏ Additional info that will be
captured during an error or faultent ๏ Console.app: ⚪ JELLE VANDEBEECK / ICAPPS 11
Usage ๏ Level: Default ๏ Log critical details to help
debug issues ๏ Console.app: N/A JELLE VANDEBEECK / ICAPPS 12
Usage ๏ Level: Error ๏ Additional information capture from the
app ๏ Console.app: ! JELLE VANDEBEECK / ICAPPS 13
Usage ๏ Level: Fault ๏ Additional information capture from the
system ๏ Console.app: ! JELLE VANDEBEECK / ICAPPS 14
Subsystem & Category let logger = OSLog(subsystem: "com.icapps.logging", category: "Monkey")
os_log("Hello ! ", log: logger) JELLE VANDEBEECK / ICAPPS 15
Privacy ๏ Prevents accidental leak of Personally Identifiable Information ๏
Replaces dynamic strings, collections, arrays with a <private> keyword JELLE VANDEBEECK / ICAPPS 16
Privacy ๏ Primitive types are public by default, but can
be made private with the <public> keyword JELLE VANDEBEECK / ICAPPS 17
Privacy let name: String = "Jake" os_log("Hi \(name)") // !
os_log("Hi %@", name) // Hi <private> os_log("Hi %{public}@", name) // Hi Jake os_log("Hi %{private}d", someNumber) // Hi <private> JELLE VANDEBEECK / ICAPPS 18
Formatters os_log("Time: %{time_t}d", timeInterval) // 2016-01-12 19:41:37 os_log("UUID: %{uuid_t}.16P", uuid)
// 2F6B8A25-A539-4320-A416-83649B8D50BC os_log("IPv4: %{network:in_addr}.16P", address) // 17.43.23.87 JELLE VANDEBEECK / ICAPPS 19
DEMO ! JELLE VANDEBEECK / ICAPPS 20
Overview ๏ Automatic formatting ๏ Automatic collecting file / function
/ line information ๏ Huge performance improvement compared to NSLog JELLE VANDEBEECK / ICAPPS 21
Overview ๏ Improved security ๏ Improved filtertering in the Console.app
JELLE VANDEBEECK / ICAPPS 22
Best practices ๏ Keep the logs compact ๏ Use the
formatters provided by Apple ๏ Don't wrap os_log in other functions ๏ Avoid dictionaries or arrays JELLE VANDEBEECK / ICAPPS 23
Activities JELLE VANDEBEECK / ICAPPS 24
Activities ๏ What happens in async code ๏ Track down
crashes ๏ Shows a clean trace in the Console.app JELLE VANDEBEECK / ICAPPS 25
Activities os_activity_create(...) ๏ Creates an activity ๏ Can be added
to the current activity with OS_ACTIVITY_CURRENT JELLE VANDEBEECK / ICAPPS 26
Scope if(...) { os_activity_scope(...) os_log(...) } JELLE VANDEBEECK / ICAPPS
27
Apply os_activity_apply(activity, ^{ os_log(...) }) JELLE VANDEBEECK / ICAPPS 28
Activity in Swift Should be bridged from Obj-C 2 !
2 Luckely someone create a wrapper that can easily be used in Swift JELLE VANDEBEECK / ICAPPS 29
DEMO ! JELLE VANDEBEECK / ICAPPS 30
References ๏ WWDC 2016 Session ๏ Bridged Activity Gist ๏
Unified Logging and Activity Tracing ๏ Activity Tracing JELLE VANDEBEECK / ICAPPS 31