Console.app: คืออะไร ฟังก์ชันและวิธีอ่านบันทึกใน macOS

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-05-29 เวลาอ่าน: 8 นาที

Console.app เป็นแอปพลิเคชันในตัวของ macOS สำหรับดู กรอง และวิเคราะห์บันทึกของระบบและผู้ใช้ โดยแสดงข้อความจากระบบบันทึกแบบรวมศูนย์ของ Apple (os_log) แบบเรียลไทม์ ช่วยให้นักพัฒนาเห็นการขัดข้อง ข้อผิดพลาด และข้อความดีบักโดยไม่ต้องเชื่อมต่อกับ Xcode ตามข้อมูลจาก Apple Support Console.app รองรับการกรองตามระบบย่อย หมวดหมู่ ระดับความสำคัญ และกระบวนการ รวมถึงการส่งออกบันทึกไปยัง .logarchive เพื่อส่งต่อให้นักพัฒนา เป็นเครื่องมือที่ขาดไม่ได้ในการวินิจฉัยปัญหาบน Mac: ตัวกรองและการค้นหาที่บันทึกไว้ช่วยให้ค้นหาข้อผิดพลาดของแอปท่ามกลางข้อความระบบนับพันได้อย่างรวดเร็ว

ประเด็นสำคัญ

  • Console.app — โปรแกรมดูบันทึกในตัวของ macOS ที่ทำงานกับระบบบันทึกแบบรวมศูนย์ของ Apple
  • การกรอง — ค้นหาตามระบบย่อย หมวดหมู่ ระดับ (Error, Fault, Debug) และข้อความพร้อมรองรับนิพจน์ปกติ
  • โหมด — Live (สตรีมแบบเรียลไทม์) และ Historical (บันทึกที่เก็บถาวร) สลับผ่านแถบเครื่องมือ
  • การส่งออก — บันทึกบันทึกเป็น .logarchive, .txt และ .json เพื่อส่งให้นักพัฒนาหรือแนบไปกับรายงานข้อบกพร่อง
  • การค้นหาที่บันทึกไว้ — ตัวกรองที่มีชื่อสำหรับสถานการณ์ทั่วไป: ข้อผิดพลาดทั้งหมดของแอป บันทึกเครือข่าย CrashReporter

Console.app คืออะไร

Console.app คืออินเทอร์เฟซแบบกราฟิกสำหรับระบบบันทึกแบบรวมศูนย์ของ Apple มันแทนที่แอปพลิเคชัน Console เก่า (ซึ่งเป็นส่วนหนึ่งของ macOS) และให้การเข้าถึงบันทึกของระบบและแอปพลิเคชันทั้งหมดที่เขียนผ่าน API os_log, os_trace และ syslog Console.app อยู่ใน /Applications/Utilities/ บน Mac ทุกเครื่อง

ซึ่งแตกต่างจาก Xcode ที่แสดงเฉพาะบันทึกของแอปพลิเคชันที่เปิดจาก IDE Console.app จะแสดงบันทึกของทุกกระบวนการบนระบบพร้อมกัน ซึ่งช่วยให้วินิจฉัยปัญหาที่เกิดขึ้นเฉพาะเมื่อเปิดแอปพลิเคชันนอก Xcode หรือในพื้นหลัง Console.app ยังแสดงบันทึกของระบบ — kernel, launchd, WindowServer — ซึ่งมีประโยชน์สำหรับการดีบักปัญหาระดับต่ำ

Console.app ไม่ต้องการการติดตั้งเครื่องมือเพิ่มเติมหรือการเชื่อมต่ออินเทอร์เน็ต ข้อมูลทั้งหมดถูกจัดเก็บในเครื่องในฐานข้อมูล .tracev3 และแอปพลิเคชันทำงานแบบออฟไลน์อย่างสมบูรณ์ หากต้องการดูบันทึกจาก Mac เครื่องอื่นหรืออุปกรณ์ iOS ให้ใช้คำสั่ง log collect จากนั้นเปิด .logarchive ใน Console.app

อินเทอร์เฟซของ Console.app

อินเทอร์เฟซของ Console.app ประกอบด้วยสามส่วนหลัก: แถบด้านข้างพร้อมตัวกรอง ตารางข้อความ และแผงรายละเอียดของข้อความที่เลือก แถบด้านข้างประกอบด้วยส่วน Devices (แหล่งบันทึกที่มี), Reports (รายงานการขัดข้องของระบบ) และ Saved Searches (คำค้นหาที่บันทึกไว้)

ตารางข้อความแสดงรายการบันทึกพร้อมคอลัมน์: Time (ประทับเวลา), Category (หมวดหมู่), Level (ระดับความสำคัญ — รหัสสี), Process (ชื่อกระบวนการ), Message (ข้อความ) การคลิกที่ข้อความใดๆ จะเปิดแผงรายละเอียดที่แสดงระบบย่อย ตัวระบุกิจกรรม ID เธรด และข้อความแบบเต็มพร้อมการจัดรูปแบบ

Console.app จะเน้นข้อความด้วยสี: แดงสำหรับ Fault, เหลืองสำหรับ Error, น้ำเงินสำหรับ Debug, เทาสำหรับ Info ข้อความเริ่มต้นจะไม่ถูกเน้น ซึ่งช่วยให้คุณสแกนสตรีมบันทึกด้วยสายตาและสังเกตเห็นเหตุการณ์สำคัญได้ทันที

swift
// บันทึกที่จะปรากฏใน Console.app
import OSLog

let logger = Logger(
    subsystem: "com.example.myapp",
    category: "network"
)

logger.error("Connection failed: timeout")
logger.debug("Retry attempt 3 of 5")

// ข้อความเหล่านี้จะเห็นใน Console.app ด้วยตัวกรอง "myapp"

ตัวกรองและการค้นหาใน Console.app

การกรอง คือคุณสมบัติหลักของ Console.app ที่เปลี่ยนสตรีมข้อความนับพันต่อวินาทีให้เป็นรายการที่อ่านได้ ช่องค้นหาที่ด้านบนรองรับเงื่อนไข AND: คำหลายคำที่คั่นด้วยช่องว่างจะแสดงเฉพาะข้อความที่มีคำทั้งหมด ตัวอย่างเช่น myapp error จะแสดงบันทึกทั้งหมดของแอป myapp ที่มีระดับ Error

ตัวกรองระบบย่อย ในแถบด้านข้างช่วยให้เลือกหนึ่งระบบย่อยหรือมากกว่า นี่เป็นวิธีที่เร็วที่สุดในการแยกบันทึกของแอปเฉพาะออกจากข้อความระบบ ตัวกรองหมวดหมู่ จะพร้อมใช้งานหลังจากเลือกระบบย่อย — มันจะแสดงหมวดหมู่ทั้งหมดที่แอปที่เลือกใช้ ตัวกรองระดับ จะจำกัดข้อความตามระดับความสำคัญ: สามารถแสดงเฉพาะข้อผิดพลาดหรือเฉพาะข้อความดีบัก

ประเภทตัวกรองตัวอย่างผลลัพธ์
ข้อความcrash paymentข้อความที่มีทั้ง crash และ payment
Subsystemcom.example.myappเฉพาะบันทึกของแอปที่ระบุ
LevelError + Faultเฉพาะข้อผิดพลาดและความล้มเหลวร้ายแรง
Categorynetworkข้อความที่มีหมวดหมู่ network
เวลา1 ชั่วโมงที่ผ่านมาเฉพาะข้อความในช่วงเวลาที่เลือก

นิพจน์ปกติในการค้นหา

ช่องค้นหาของ Console.app รองรับ นิพจน์ปกติ ผ่านโครงสร้าง REGEX:pattern ตัวอย่าง: REGEX:error.*tim(e|out) จะค้นหาข้อความทั้งหมดที่มี “error” และคำที่ขึ้นต้นด้วย “tim” และลงท้ายด้วย “e” หรือ “out” นิพจน์ปกติทำงานเฉพาะในช่องค้นหาเท่านั้น ไม่ทำงานในตัวกรองระบบย่อยหรือหมวดหมู่

โหมด Live และ Historical

Live คือโหมดเรียลไทม์ที่ Console.app แสดงข้อความใหม่ทันทีที่ปรากฏในบัฟเฟอร์วงแหวนของเคอร์เนล โหมดนี้ทำงานอยู่โดยค่าเริ่มต้นและเหมาะสำหรับการดีบักแอปพลิเคชันที่กำลังทำงาน: คุณเปิดแอปและเห็นบันทึกของมันด้วยความล่าช้า 1–5 วินาที ปุ่ม Live (หรือ ⌘L) จะเปิดและปิดสตรีม

Historical คือโหมดดูคลังเก็บ Console.app จะเก็บข้อความทั้งหมดในช่วง 7–14 วันที่ผ่านมา (กำหนดค่าได้ในระบบ) ในฐานข้อมูล .tracev3 โหมด Historical จะเปิดคลังเก็บนี้และให้คุณค้นหาโดยใช้ตัวกรองใดๆ ก็ได้ ไม่ใช่แค่สตรีมปัจจุบัน ซึ่งจำเป็นอย่างยิ่งสำหรับการวิเคราะห์ปัญหาที่เกิดขึ้นในเวลากลางคืนหรือเมื่อแอปทำงานโดยไม่ได้เชื่อมต่อกับ Mac

การสลับระหว่างโหมดทำได้ผ่านปุ่ม Live ในแถบเครื่องมือ เมื่อปิด Live Console.app จะแสดงข้อมูลในอดีต ในโหมดนี้คุณสามารถนำทางไทม์ไลน์โดยใช้ปฏิทินหรือปุ่ม ← → ข้อมูลในอดีตจะใช้ได้เฉพาะกับบันทึกที่ถูกบันทึกลงดิสก์เท่านั้น — ข้อความที่ถูกเขียนทับในบัฟเฟอร์วงแหวนจะไม่ปรากฏในคลังเก็บ

การส่งออกและแชร์บันทึก

Console.app รองรับการส่งออกบันทึกที่กรองแล้วในหลายรูปแบบ File → Export → Save ให้คุณเลือกรูปแบบ: .logarchive (รูปแบบดั้งเดิมของ Apple รวมเมทาดาทาทั้งหมด), .txt (ข้อความธรรมดาพร้อมคอลัมน์) และ .json (ข้อมูลที่มีโครงสร้างพร้อมฟิลด์) สำหรับแนบไปกับรายงานข้อบกพร่อง ให้ใช้ .logarchive — สามารถเปิดได้บน Mac ทุกเครื่องใน Console.app

การส่งออกจากอุปกรณ์ iOS: ผ่าน Xcode (Devices → Open Console) หรือผ่านคำสั่ง log collect --device --output ./archive.logarchive ในเทอร์มินัล เปิด .logarchive ที่ได้ใน Console.app บน Mac — บันทึกมาจากอุปกรณ์ระยะไกล แต่ตัวกรองและการค้นหาทำงานเหมือนกับบันทึกในเครื่อง

swift
// การส่งออกบันทึกอุปกรณ์ iOS ผ่านเทอร์มินัล
// log collect --device --output ./ios_crash.logarchive
// log show --subsystem com.example.app --last 1h --output json

// ตัวอย่าง: ส่งออกบันทึกในชั่วโมงที่ผ่านมา
// log show --predicate 'subsystem == "com.example.myapp"' \
//   --info --debug --last 1h --output json > logs.json

// การแยกวิเคราะห์บันทึกที่ส่งออกใน Swift
let jsonData = try Data(contentsOf: URL(fileURLWithPath: "logs.json"))
let decoded = try JSONDecoder()
    .decode([LogEntry].self, from: jsonData)

การแชร์บันทึก

.logarchive เป็นรูปแบบที่เหมาะสมที่สุดสำหรับส่งให้เพื่อนร่วมงานหรือแนบไปกับตั๋ว JIRA ไฟล์ประกอบด้วยไม่เพียงข้อความ แต่ยังรวมถึงระบบย่อย หมวดหมู่ ประทับเวลา ID เธรด และเมทาดาทาทั้งหมด ขนาดคลังเก็บเล็กกว่าบันทึกดิบอย่างมากเนื่องจากการบีบอัด .tracev3 ก่อนส่ง ตรวจสอบให้แน่ใจว่าบันทึกไม่มีข้อมูลส่วนตัว: ใช้ตัวกรองตามระบบย่อยของแอปของคุณเพื่อแยกบันทึกของระบบที่อาจมีข้อมูลที่เป็นความลับของกระบวนการอื่น

ตัวอย่างการดีบักเชิงปฏิบัติด้วย Console.app

การวินิจฉัยการขัดข้องโดยไม่ใช้ Xcode: หากแอปพลิเคชันขัดข้องเมื่อเปิดนอก Xcode Console.app จะแสดงข้อความ Fault จากกระบวนการ ค้นหา Reports → Crash Reports ในแถบด้านข้าง — รายงานการขัดข้องแบบเต็มพร้อมลายเซ็นและสแต็กจะแสดงอยู่ที่นั่น ใช้ตัวกรองระบบย่อยสำหรับแอปของคุณและตั้งค่าระดับเป็น Error+Fault เพื่อดูเหตุการณ์สำคัญทั้งหมดก่อนการขัดข้อง

การวิเคราะห์ประสิทธิภาพผ่าน Console.app

Console.app ช่วยให้คุณติดตามความล่าช้าในแอปโดยใช้ประทับเวลา หากเวลาผ่านไปมากกว่าที่คาดไว้ระหว่างข้อความที่เกี่ยวข้องสองข้อความ (เช่น “ส่งคำขอแล้ว” และ “ได้รับคำตอบแล้ว”) นั่นเป็นสัญญาณของปัญหาประสิทธิภาพ ตัวกรองบนระบบย่อยของแอปของคุณด้วยระดับ Default จะแสดงเหตุการณ์สำคัญทั้งหมดด้วยความแม่นยำระดับมิลลิวินาที

การค้นหาการรั่วไหลของหน่วยความจำ: เมื่อเกิดการรั่วไหลของหน่วยความจำ ระบบจะส่งคำเตือนหน่วยความจำผ่าน os_log ด้วยหมวดหมู่ memory และระดับ Error ใน Console.app ให้กรองด้วยคำว่า memory และเลือกระบบย่อยของคุณ หากคำเตือนเกิดขึ้นซ้ำทุก 5–10 วินาที แสดงว่าแอปกำลังใช้หน่วยความจำอย่างต่อเนื่อง คุณยังสามารถเปิดบันทึก Debug เพื่อติดตามการจัดสรร

การดีบักคำขอเครือข่าย: หากแอปของคุณใช้ os_log สำหรับเหตุการณ์เครือข่าย Console.app จะแสดงคำขอและการตอบกลับทั้งหมดพร้อมเวลา ตัวกรอง category=network ช่วยลดสัญญาณรบกวน หากเวลาระหว่างคำขอและการตอบกลับเกินที่คาดไว้ ให้ค้นหาข้อความที่มี level=Error — มันจะบ่งบอกถึงการหมดเวลาหรือข้อผิดพลาด DNS

swift
// โครงสร้างสำหรับแยกวิเคราะห์บันทึก JSON ของ Console.app
struct LogEntry: Codable {
    let timestamp: String
    let eventMessage: String
    let subsystem: String
    let category: String
    let messageType: UInt8

    var level: String {
        switch messageType {
        case 1: return "Fault"
        case 16: return "Error"
        case 17: return "Debug"
        default: return "Default"
        }
    }
}

คำถามที่พบบ่อย

Console.app อยู่ที่ไหนบน Mac?

Console.app อยู่ในโฟลเดอร์ /Applications/Utilities/ คุณสามารถเปิดได้ผ่าน Spotlight (⌘Space → Console) หรือผ่าน Finder → แอปพลิเคชัน → อรรถประโยชน์ → Console ไอคอนของแอปเป็นภาพคำพูดสไตล์ที่มีเฟือง

ทำไม Console.app แสดง <private> แทนค่าจริง?

os_log จะปกปิดสตริงและออบเจกต์เป็น private โดยค่าเริ่มต้น Console.app จะแสดงเป็น <private> ในโหมดการผลิต หากต้องการดูค่าจริง ให้เปิดแอปจาก Xcode หรือเปิดใช้งานโปรไฟล์การรวบรวมด้วยระดับ Debug สำหรับระบบย่อยของคุณ

จะกรองเฉพาะบันทึกของแอปของฉันได้อย่างไร?

ในแถบด้านข้างของ Console.app ให้เลือก ระบบย่อย ของคุณ (com.example.app) ในส่วน Devices → อุปกรณ์ของคุณ → Processes หรืออีกทางเลือกหนึ่ง — ป้อนชื่อกระบวนการในช่องค้นหาและเลือก Process: YourApp จากรายการแบบเลื่อนลง

Console.app เก็บบันทึกไว้นานแค่ไหน?

โดยค่าเริ่มต้น macOS จะเก็บบันทึกใน .tracev3 เป็นเวลา 7–14 วัน ขึ้นอยู่กับพื้นที่ดิสก์ที่ว่าง เมื่อพื้นที่ไม่เพียงพอ บันทึกที่เก่าที่สุดจะถูกลบโดยอัตโนมัติ สามารถเพิ่มระยะเวลาการเก็บรักษาได้ผ่าน sudo log config แต่ไม่แนะนำสำหรับเครื่องที่ใช้งานจริง

ฉันสามารถดูบันทึกของอุปกรณ์ iOS ใน Console.app ได้หรือไม่?

ได้ เชื่อมต่ออุปกรณ์ iOS เข้ากับ Mac ผ่าน USB เปิด Xcode → Devices → เลือกอุปกรณ์ → Open Console Console.app จะแสดงบันทึกจากอุปกรณ์ที่เชื่อมต่อแบบเรียลไทม์ สำหรับการรวบรวมแบบออฟไลน์ ให้ใช้ log collect ในเทอร์มินัลพร้อมแฟล็ก --device

สรุป

  • Console.app — เครื่องมือในตัวของ macOS สำหรับดูบันทึกแบบรวมศูนย์ (os_log) ไม่จำเป็นต้องใช้ Xcode หรือติดตั้งเพิ่มเติม
  • ตัวกรอง — ค้นหาตามระบบย่อย หมวดหมู่ ระดับความสำคัญ ข้อความ และนิพจน์ปกติด้วยเงื่อนไข AND เพื่อแยกการบันทึกของแอปเฉพาะ
  • โหมด — Live (สตรีมแบบเรียลไทม์ด้วยความล่าช้า 1–5 วินาที) และ Historical (คลังเก็บ 7–14 วัน) สำหรับวิเคราะห์ปัญหาที่เกิดขึ้นแล้ว
  • การส่งออก — .logarchive พร้อมเมทาดาทาเต็มรูปแบบสำหรับแชร์กับเพื่อนร่วมงาน, .json สำหรับการวิเคราะห์เชิงโปรแกรม, .txt สำหรับดูอย่างรวดเร็ว
  • การวินิจฉัย — ค้นหาการขัดข้อง การรั่วไหลของหน่วยความจำ และข้อผิดพลาดเครือข่ายโดยไม่ใช้ Xcode ผ่านการกรองตามข้อผิดพลาดและความล้มเหลวร้ายแรงด้วยการแสดงสี Fault
  • อุปกรณ์ระยะไกล — ดูบันทึกอุปกรณ์ iOS ผ่าน Xcode หรือส่งออกผ่าน log collect และเปิด .logarchive ใน Console.app บน Mac
  • ความเป็นส่วนตัว — os_log ปกปิดข้อมูล <private> ใน Console.app ในโหมดการผลิต สำหรับการดีบักให้ใช้ Xcode หรือโปรไฟล์การรวบรวมระดับ Debug

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม