github.com/guyezi/gofrontend@v0.0.0-20200228202240-7a62a49e62c0/libgo/go/log/syslog/syslog_libc.go (about) 1 // Copyright 2011 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // +build solaris irix 6 7 // gccgo specific implementation of syslog for Solaris. Solaris uses 8 // STREAMS to communicate with syslogd. That is enough of a pain that 9 // we just call the libc function. 10 11 package syslog 12 13 import ( 14 "fmt" 15 "os" 16 "syscall" 17 "time" 18 ) 19 20 func unixSyslog() (conn serverConn, err error) { 21 return libcConn(0), nil 22 } 23 24 type libcConn int 25 26 func syslog_c(int, *byte) 27 28 func (libcConn) writeString(p Priority, hostname, tag, msg, nl string) error { 29 timestamp := time.Now().Format(time.RFC3339) 30 log := fmt.Sprintf("%s %s %s[%d]: %s%s", timestamp, hostname, tag, os.Getpid(), msg, nl) 31 buf, err := syscall.BytePtrFromString(log) 32 if err != nil { 33 return err 34 } 35 syscall.Entersyscall() 36 syslog_c(int(p), buf) 37 syscall.Exitsyscall() 38 return nil 39 } 40 41 func (libcConn) close() error { 42 return nil 43 }