#todayilearned #onunixandgo
- log เป็นสิ่งจำเป็น เอาไว้ debug, track, alert พวก monitoring ทั้งหลายถ้าไม่ส่องจาก log เอาเองก็ต้องมี plugin เป็น forwarder ซึ่งก็มาเกาะจาก log อยู่ดี
- ใน unix มี system log (syslog on mac, rsyslog on linux) ส่วนใหญ่เก็บไว้ใน /var/log แล้วแต่ config
- System log เป็น client - server อยาก write log ก็ forward message with severity via udp/tcp/socket ไปหา facilities
- facilities ประกอบไปด้วย kernel, user, auth, mail, etc...
- severity ก็พวก debug, info, warning, error, etc...
- ใน Go มี standard package log เอาไว้ write log
- ใน Go มี standard package syslog เอาไว้ write system log
- standard package log มันไม่แคร์ severity อ่ะ ซึ่งเอาเข้าจริงมันก็แค่ text ข้างใน file อ่ะนะ
example: write system mail log in Go
package main
import (
"log"
"log/syslog"
)
func main() {
sLog, err := syslog.New(syslog.LOG_MAIL, "MYFUCKINGLOGGER")
if err != nil {
log.Fatal(err)
}
log.setOutput(sLog)
log.Prinln("Hello mail")
}
cat /var/log/mail.log
=> Jan 15 17:15:31 Lattapons-MacBook-Pro MYFUCKINGLOGGER[22381]: 2019/01/15 17:15:31 Hello mail
ปล. ปกติ standard package log ถ้าเราไม่ set output ให้มัน มันจะ write ใส่ standard error เชื่อผม ผมอ่านโค้ดมา :D