一、包概述
1 | import "log/syslog" |
- syslog 包提供一个简单的系统日志服务的接口。它可以使用UNIX域套接字、UDP或TCP向syslog守护进程发送消息
- 只需拨一个电话就可以了。当写入失败时,syslog客户端将尝试重新连接到服务器并再次写入
- syslog包被冻结,不接受新特性。一些外部包提供了更多的功能。请参阅:https://godoc.org/?q=syslog
Bug
- 这个包没有在Windows上实现。由于syslog包被冻结,Windows用户被鼓励使用标准库之外的包。有关背景信息,请参见:https://github.com/golang/go/blob/master/issue/1108
- 这一揽子计划没有在计划9中实施
- 这个包不是在NaCl(本地客户端)上实现的
二、包总览
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | func NewLogger(p Priority, logFlag int) (*log.Logger, error) type Priority type Writer func Dial(network, raddr string, priority Priority, tag string) (*Writer, error) func New(priority Priority, tag string) (*Writer, error) func (w *Writer) Alert(m string) error func (w *Writer) Close() error func (w *Writer) Crit(m string) error func (w *Writer) Debug(m string) error func (w *Writer) Emerg(m string) error func (w *Writer) Err(m string) error func (w *Writer) Info(m string) error func (w *Writer) Notice(m string) error func (w *Writer) Warning(m string) error func (w *Writer) Write(b []byte) (int, error) |
三、func NewLogger
1 | func NewLogger(p Priority, logFlag int) (*log.Logger, error) |
- NewLogger创建一个日志。日志记录器,其输出以指定的优先级写入系统日志服务。logFlag参数是传递给log的标志集。新建用于创建日志程序
四、type Priority
1 | type Priority int |
- 优先级是syslog功能和严重性的组合。例如,LOG_ALERT | LOG_FTP从FTP工具发送一个警告严重性消息。默认的严重性是LOG_EMERG;默认工具是LOG_KERN
1 2 3 4 5 6 7 8 9 10 11 12 13 | const ( // From /usr/include/sys/syslog.h. // These are the same on Linux, BSD, and OS X. LOG_EMERG Priority = iota LOG_ALERT LOG_CRIT LOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_DEBUG ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | const ( // From /usr/include/sys/syslog.h. // These are the same up to LOG_FTP on Linux, BSD, and OS X. LOG_KERN Priority = iota << 3 LOG_USER LOG_MAIL LOG_DAEMON LOG_AUTH LOG_SYSLOG LOG_LPR LOG_NEWS LOG_UUCP LOG_CRON LOG_AUTHPRIV LOG_FTP LOG_LOCAL0 LOG_LOCAL1 LOG_LOCAL2 LOG_LOCAL3 LOG_LOCAL4 LOG_LOCAL5 LOG_LOCAL6 LOG_LOCAL7 ) |
五、type Writer
1 2 3 | type Writer struct { // contains filtered or unexported fields } |
- Writer是到syslog服务器的连接
func Dial
1 func Dial(network, raddr string, priority Priority, tag string) (*Writer, error)
- 通过连接到指定网络上的地址raddr, Dial建立到日志守护进程的连接。对返回的写入器的每次写操作都会发送一条带有给定功能、严重性和标记的日志消息。如果网络是空的,拨号将连接到本地syslog服务器。否则,请参阅net的文档。查询网络和raddr的有效值
- 例如
1
2
3
4
5
6
7 sysLog, err := syslog.Dial("tcp", "localhost:1234",
syslog.LOG_WARNING|syslog.LOG_DAEMON, "demotag")
if err != nil {
log.Fatal(err)
}
fmt.Fprintf(sysLog, "This is a daemon warning with demotag.")
sysLog.Emerg("And this is a daemon emergency with demotag.")
func New()
1 func New(priority Priority, tag string) (*Writer, error)
- 建立到系统日志守护进程的新连接。对返回的写入器的每次写入都会发送一条具有给定优先级和前缀的日志消息
func (w *Writer) Alert()
1 func (w *Writer) Alert(m string) error
- Alert记录一条严重性为LOG_ALERT的消息,忽略传递给New的严重性
func (w *Writer) Close()
1 func (w *Writer) Close() error
- Close关闭到syslog守护进程的连接
func (w *Writer) Crit()
1 func (w *Writer) Crit(m string) error
- Crit记录一条严重性为LOG_CRIT的消息,忽略传递给New的严重性。
func (w *Writer) Debug()
1 func (w *Writer) Debug(m string) error
- Debug记录一条严重性为LOG_DEBUG的消息,忽略传递给New的严重性。
func (w *Writer) Emerg()
1 func (w *Writer) Emerg(m string) error
- Emerg记录一条严重性为LOG_EMERG的消息,忽略传递给New的严重性
func (w *Writer) Err()
1 func (w *Writer) Err(m string) error
- Err记录一条严重性为LOG_ERR的消息,忽略传递给New的严重性
func (w *Writer) Info()
1 func (w *Writer) Info(m string) error
- Info记录一条严重性为LOG_INFO的消息,忽略传递给New的严重性
func (w *Writer) Notice()
1 func (w *Writer) Notice(m string) error
- 通知记录一条严重性为LOG_NOTICE的消息,忽略传递给New的严重性。
func (w *Writer) Warning()
1 func (w *Writer) Warning(m string) error
- Warning记录一条严重性为LOG_WARNING的消息,忽略传递给New的严重性。
func (w *Writer) Write()
1 func (w *Writer) Write(b []byte) (int, error)
- Write向syslog守护进程发送一条日志消息。