应用程序可以通过 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!