[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"academy-blogs-th-1-1-all-go-logging-event-recording-all--*":3,"academy-blog-translations-4bc3qjz6dien6ht":114},{"data":4,"page":102,"perPage":102,"totalItems":102,"totalPages":102},[5],{"alt":6,"collectionId":7,"collectionName":8,"content":9,"cover_image":10,"cover_image_path":11,"created":12,"created_by":13,"expand":14,"id":108,"keywords":109,"locale":84,"published_at":110,"scheduled_at":13,"school_blog":106,"short_description":111,"slug":112,"status":104,"title":6,"updated":113,"updated_by":13,"views":107},"Ep.17 Go กับ Logging - บันทึกทุกเหตุการณ์ในโปรแกรม","sclblg987654321","school_blog_translations","\u003Cp class=\"p1\">\u003Cstrong>Go กับ Logging - บันทึกทุกเหตุการณ์ในโปรแกรม\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p2\">&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">\u003Cstrong>Logging คืออะไร?\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p3\">Logging คือการบันทึกข้อมูลหรือข้อความที่บอกว่าเกิดอะไรขึ้นในโปรแกรม เช่น บันทึกเมื่อมีการเชื่อมต่อฐานข้อมูลสำเร็จ หรือบันทึกข้อความแจ้งเตือนเมื่อมีข้อผิดพลาด การทำ Logging ช่วยให้เราตรวจสอบปัญหาได้ง่ายขึ้นเมื่อโปรแกรมทำงานผิดพลาด\u003C\u002Fp>\u003Cp class=\"p2\">&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">\u003Cstrong>การใช้งาน Logging เบื้องต้นใน Go\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p3\">Go มีแพ็กเกจ log ที่ช่วยให้เราทำ Logging ได้อย่างง่ายดาย โดยใช้ฟังก์ชันหลักเช่น log.Print, log.Println, และ log.Printf\u003C\u002Fp>\u003Cp class=\"p3\">อธิบายโค้ด:\u003C\u002Fp>\u003Cp class=\"p3\">\u003Ci>log.Println \u003C\u002Fi>จะพิมพ์ข้อความพร้อมขึ้นบรรทัดใหม่\u003C\u002Fp>\u003Cp class=\"p3\">\u003Ci>log.Print \u003C\u002Fi>จะพิมพ์ข้อความ\u003C\u002Fp>\u003Cp class=\"p3\">\u003Ci>log.Printf \u003C\u002Fi>ใช้แสดงข้อความพร้อมใส่รูปแบบ\u003Ci> \u003C\u002Fi>เช่น\u003Ci> %d \u003C\u002Fi>สำหรับตัวเลข\u003C\u002Fp>\u003Cp class=\"p3\">ตัวอย่างการใช้งาน Logging:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">package main\r\n\r\nimport (\r\n    \"log\"\r\n)\r\n\r\nfunc main() {\r\n    log.Println(\"Starting the application...\")\r\n    log.Print(\"This is a regular log message.\")\r\n    log.Printf(\"This is a formatted log message: %d\", 123)\r\n}\r\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>บันทึก Error และ Fatal Log\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">นอกจากบันทึกข้อความปกติ เรายังสามารถบันทึกข้อความเมื่อเกิดข้อผิดพลาดโดยใช้ log.Fatal และ log.Panic\u003C\u002Fp>\u003Cp class=\"p1\">\u003Ci>log.Fatal: \u003C\u002Fi>บันทึกข้อผิดพลาดและหยุดโปรแกรม\u003C\u002Fp>\u003Cp class=\"p1\">\u003Ci>log.Panic: \u003C\u002Fi>บันทึกข้อผิดพลาดพร้อมแสดง\u003Ci> Stack Trace (\u003C\u002Fi>เส้นทางการทำงานของโปรแกรม\u003Ci>) \u003C\u002Fi>ก่อนหยุดโปรแกรม\u003C\u002Fp>\u003Cp class=\"p1\">ตัวอย่างการใช้งาน:\u003C\u002Fp>\u003Cp class=\"p1\">ในตัวอย่างนี้ log.Fatal จะบันทึกข้อความแล้วหยุดโปรแกรมทันทีเมื่อเกิดข้อผิดพลาด\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">package main\r\n\r\nimport (\r\n    \"log\"\r\n    \"os\"\r\n)\r\n\r\nfunc main() {\r\n    file, err := os.Open(\"nonexistent_file.txt\")\r\n    if err != nil {\r\n        log.Fatal(\"Error opening file:\", err)\r\n    }\r\n    defer file.Close()\r\n}\r\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>การบันทึก Log ลงไฟล์แทนการแสดงบนหน้าจอ\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">บางครั้งเราอาจต้องการเก็บ Log ลงในไฟล์แทนที่จะพิมพ์ลงบนหน้าจอ เพื่อให้สามารถตรวจสอบเหตุการณ์ย้อนหลังได้\u003C\u002Fp>\u003Cp class=\"p1\">ตัวอย่างการบันทึก Log ลงไฟล์:\u003C\u002Fp>\u003Cp class=\"p1\">ในตัวอย่างนี้:\u003C\u002Fp>\u003Cp class=\"p1\">log.SetOutput(file) จะทำให้ข้อความ Log ถูกบันทึกลงในไฟล์ app.log\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">package main\r\n\r\nimport (\r\n    \"log\"\r\n    \"os\"\r\n)\r\n\r\nfunc main() {\r\n    file, err := os.OpenFile(\"app.log\", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)\r\n    if err != nil {\r\n        log.Fatal(\"Could not open log file:\", err)\r\n    }\r\n    defer file.Close()\r\n\r\n    log.SetOutput(file) \u002F\u002F ตั้งให้ log เขียนลงไฟล์แทนหน้าจอ\r\n\r\n    log.Println(\"Starting application...\")\r\n    log.Println(\"Logging information to file.\")\r\n}\r\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>การใช้ Flags เพิ่มรายละเอียดใน Log\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">เราสามารถเพิ่มรายละเอียดให้ Log โดยใช้ Flags เพื่อบอกให้ Log แสดงวันที่และเวลาของข้อความที่บันทึก\u003C\u002Fp>\u003Cp class=\"p1\">ตัวอย่าง Flags ที่ใช้บ่อย:\u003C\u002Fp>\u003Cp class=\"p1\">\u003Ci>log.LstdFlags: \u003C\u002Fi>แสดงวันที่และเวลา\u003C\u002Fp>\u003Cp class=\"p1\">\u003Ci>log.Lshortfile: \u003C\u002Fi>แสดงตำแหน่งไฟล์ที่เกิดเหตุการณ์\u003C\u002Fp>\u003Cp class=\"p1\">ตัวอย่าง:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">log.SetFlags(log.LstdFlags | log.Lshortfile)\r\nlog.Println(\"This is a log message with date, time, and file location.\")\r\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>สรุปง่ายๆ\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul class=\"ul1\">\u003Cli class=\"li1\">ใช้ log.Print, log.Println, log.Printf สำหรับข้อความปกติ\u003C\u002Fli>\u003Cli class=\"li1\">ใช้ log.Fatal และ log.Panic สำหรับบันทึกข้อผิดพลาดและหยุดโปรแกรม\u003C\u002Fli>\u003Cli class=\"li1\">สามารถบันทึก Log ลงไฟล์เพื่อเก็บข้อมูลระยะยาว\u003C\u002Fli>\u003Cli class=\"li3\">ใช้\u003Cspan class=\"s2\"> Flags \u003C\u002Fspan>เพื่อเพิ่มข้อมูลวันที่\u003Cspan class=\"s2\"> \u003C\u002Fspan>เวลา\u003Cspan class=\"s2\"> \u003C\u002Fspan>และตำแหน่งไฟล์ใน\u003Cspan class=\"s2\"> Log\u003C\u002Fspan>\u003C\u002Fli>\u003C\u002Ful>","3_11zon_fgiym78ohu.webp","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fkj572etvm0q6fou\u002F3_11zon_fgiym78ohu.webp","2026-03-04 08:34:37.756Z","",{"keywords":15,"locale":78,"school_blog":88},[16,23,28,33,38,43,48,53,58,63,68,73],{"collectionId":17,"collectionName":18,"created":19,"created_by":13,"id":20,"name":21,"updated":22,"updated_by":13},"sclkey987654321","school_keywords","2026-03-04 08:26:59.195Z","gab60xd583s3qaw","Superdev School","2026-04-10 16:07:37.087Z",{"collectionId":17,"collectionName":18,"created":24,"created_by":13,"id":25,"name":26,"updated":27,"updated_by":13},"2026-03-04 08:26:56.612Z","yf74wkqyamfc5qx","โปรแกรมเมอร์","2026-04-10 16:07:36.426Z",{"collectionId":17,"collectionName":18,"created":29,"created_by":13,"id":30,"name":31,"updated":32,"updated_by":13},"2026-03-04 08:31:53.015Z","801w5t09mfaa9hl","ภาษาโปรแกรม","2026-04-10 16:07:46.625Z",{"collectionId":17,"collectionName":18,"created":34,"created_by":13,"id":35,"name":36,"updated":37,"updated_by":13},"2026-03-04 08:32:27.254Z","xl8ixz1jmfnab5f","ฝึกเขียนโปรแกรม","2026-04-10 16:07:54.377Z",{"collectionId":17,"collectionName":18,"created":39,"created_by":13,"id":40,"name":41,"updated":42,"updated_by":13},"2026-03-04 08:31:30.863Z","oyltq82epf0vqka","การเขียนโปรแกรม","2026-04-10 16:07:41.883Z",{"collectionId":17,"collectionName":18,"created":44,"created_by":13,"id":45,"name":46,"updated":47,"updated_by":13},"2026-03-04 08:34:32.087Z","kbrswxvizdfzrdz","log.Panic","2026-04-10 16:08:16.777Z",{"collectionId":17,"collectionName":18,"created":49,"created_by":13,"id":50,"name":51,"updated":52,"updated_by":13},"2026-03-04 08:34:33.669Z","kkc3qkdxnu2bi2k","log.Fatal","2026-04-10 16:08:17.351Z",{"collectionId":17,"collectionName":18,"created":54,"created_by":13,"id":55,"name":56,"updated":57,"updated_by":13},"2026-03-04 08:34:33.961Z","4m7k8rg9qp5698q","log.Print","2026-04-10 16:08:17.441Z",{"collectionId":17,"collectionName":18,"created":59,"created_by":13,"id":60,"name":61,"updated":62,"updated_by":13},"2026-03-04 08:34:36.640Z","8eci4oaapkjdqg1","การจัดการ Log","2026-04-10 16:08:18.355Z",{"collectionId":17,"collectionName":18,"created":64,"created_by":13,"id":65,"name":66,"updated":67,"updated_by":13},"2026-03-04 08:34:37.165Z","uxpqg7zux1iapui","การบันทึกเหตุการณ์","2026-04-10 16:08:18.549Z",{"collectionId":17,"collectionName":18,"created":69,"created_by":13,"id":70,"name":71,"updated":72,"updated_by":13},"2026-03-04 08:33:55.302Z","0mue4zt83jcdtq9","Logging","2026-04-10 16:08:03.396Z",{"collectionId":17,"collectionName":18,"created":74,"created_by":13,"id":75,"name":76,"updated":77,"updated_by":13},"2026-03-04 08:20:14.253Z","ah6lvy4x8qe08l5","Golang","2026-04-10 16:07:26.172Z",{"code":79,"collectionId":80,"collectionName":81,"created":82,"flag":83,"id":84,"is_default":85,"label":86,"updated":87},"th","pbc_1989393366","locales","2026-01-22 10:59:55.832Z","twemoji:flag-thailand","s8wri3bt4vgg2ji",true,"Thai","2026-04-10 15:42:46.614Z",{"category":89,"collectionId":90,"collectionName":91,"expand":92,"id":106,"views":107},"wqxt7ag2gn7xcmk","pbc_2105096300","school_blogs",{"category":93},{"blogIds":94,"collectionId":95,"collectionName":96,"created":97,"created_by":13,"id":89,"image":98,"image_alt":13,"image_path":99,"label":100,"name":101,"priority":102,"publish_at":103,"scheduled_at":13,"status":104,"updated":105,"updated_by":13},[],"sclcatblg987654321","school_category_blogs","2026-03-04 08:33:53.210Z","59ty92ns80w_15oc1implw.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fwqxt7ag2gn7xcmk\u002F59ty92ns80w_15oc1implw.png",{"en":101,"th":101},"Golang The Series",1,"2026-03-16 04:39:38.440Z","published","2026-04-25 02:32:15.470Z","4bc3qjz6dien6ht",350,"kj572etvm0q6fou",[20,25,30,35,40,45,50,55,60,65,70,75],"2025-01-27 04:36:52.239Z","เรียนรู้การใช้ Logging ใน Go เพื่อบันทึกข้อมูลและข้อความที่เกิดขึ้นในโปรแกรม รวมถึงการบันทึกข้อผิดพลาดและการจัดการ Log","go-logging-event-recording","2026-04-25 02:47:34.141Z",{"th":112}]