Skip to content

Instantly share code, notes, and snippets.

@clozed2u
Created Jan 15, 2019
Embed
What would you like to do?

#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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment