應用程序可以通過 UNIX domain sockets, UDP or TCP,向syslog守護進程發送日志。syslog守護進程可以在遠端。
這樣,就可以不用單獨收集應用程序的日志了。
golang提供了syslog 包,只需要調用Dial()
,就可以連接syslog服務器,然后發送消息。
在寫失敗的情況下,syslog client會嘗試重連syslog服務器,並重寫。
Dial
定義如下
func Dial(network, raddr string, priority Priority, tag string) (*Writer, error)
Dial 建立一個到log守護進程的連接,這個守護進程的地址由參數raddr指定,連接方式由參數network定義(可以為tcp, udp,或空)。
如果network是空,Dial會連接到本地的syslog服務器。
下面簡單舉例說明。
package main
import (
"log"
"log/syslog"
)
func main() {
sysLog, err := syslog.Dial("", "",syslog.LOG_ERR, "Saturday")
if err != nil {
log.Fatal(err)
}
sysLog.Emerg("Hello world!")
}
程序執行后,查看/var/log/system.log文件,可以看到最新的一條日志內容如下:
Feb 16 20:52:44 admin Saturday[86161]: Hello world!