Skip to content

Instantly share code, notes, and snippets.

@bylatt
Created January 15, 2019 10:35
Show Gist options
  • Select an option

  • Save bylatt/ecdb018de6258c406994c624908d7bb7 to your computer and use it in GitHub Desktop.

Select an option

Save bylatt/ecdb018de6258c406994c624908d7bb7 to your computer and use it in GitHub Desktop.

Revisions

  1. bylatt created this gist Jan 15, 2019.
    37 changes: 37 additions & 0 deletions log.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,37 @@
    #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
    ```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")
    }
    ```

    ```bash
    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