一、包概述

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守护进程发送一条日志消息。