github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/log/syslog/syslog.go (about)

     1  // Copyright 2009 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  //go:build !windows && !plan9
     6  
     7  package syslog
     8  
     9  import (
    10  	"github.com/shogo82148/std/log"
    11  	"github.com/shogo82148/std/sync"
    12  )
    13  
    14  // Priorityは、syslogの施設と重大度の組み合わせです。
    15  // 例えば、[LOG_ALERT] | [LOG_FTP] は、FTP施設からのアラート重大度メッセージを送信します。
    16  // デフォルトの重大度は [LOG_EMERG] で、デフォルトの施設は [LOG_KERN] です。
    17  type Priority int
    18  
    19  const (
    20  
    21  	// /usr/include/sys/syslog.hから取得。
    22  	// これらはLinux、BSD、OS Xで同じです。
    23  	LOG_EMERG Priority = iota
    24  	LOG_ALERT
    25  	LOG_CRIT
    26  	LOG_ERR
    27  	LOG_WARNING
    28  	LOG_NOTICE
    29  	LOG_INFO
    30  	LOG_DEBUG
    31  )
    32  
    33  const (
    34  
    35  	// /usr/include/sys/syslog.hから取得。
    36  	// これらはLinux、BSD、OS XでLOG_FTPまで同じです。
    37  	LOG_KERN Priority = iota << 3
    38  	LOG_USER
    39  	LOG_MAIL
    40  	LOG_DAEMON
    41  	LOG_AUTH
    42  	LOG_SYSLOG
    43  	LOG_LPR
    44  	LOG_NEWS
    45  	LOG_UUCP
    46  	LOG_CRON
    47  	LOG_AUTHPRIV
    48  	LOG_FTP
    49  	_
    50  	_
    51  	_
    52  	_
    53  	LOG_LOCAL0
    54  	LOG_LOCAL1
    55  	LOG_LOCAL2
    56  	LOG_LOCAL3
    57  	LOG_LOCAL4
    58  	LOG_LOCAL5
    59  	LOG_LOCAL6
    60  	LOG_LOCAL7
    61  )
    62  
    63  // Writerはsyslogサーバへの接続です。
    64  type Writer struct {
    65  	priority Priority
    66  	tag      string
    67  	hostname string
    68  	network  string
    69  	raddr    string
    70  
    71  	mu   sync.Mutex
    72  	conn serverConn
    73  }
    74  
    75  // Newはシステムログデーモンへの新しい接続を確立します。戻り値のライターへの
    76  // 各書き込みは、指定された優先度(syslog施設と重大度の組み合わせ)と
    77  // プレフィックスタグを持つログメッセージを送信します。タグが空の場合、[os.Args][0]が使用されます。
    78  func New(priority Priority, tag string) (*Writer, error)
    79  
    80  // Dialは、指定されたネットワーク上のアドレスraddrに接続することで
    81  // ログデーモンへの接続を確立します。戻り値のライターへの
    82  // 各書き込みは、施設と重大度(priorityから)およびタグを持つログメッセージを送信します。
    83  // タグが空の場合、[os.Args][0]が使用されます。
    84  // ネットワークが空の場合、Dialはローカルのsyslogサーバーに接続します。
    85  // それ以外の場合は、ネットワークとraddrの有効な値については、net.Dialのドキュメンテーションを参照してください。
    86  func Dial(network, raddr string, priority Priority, tag string) (*Writer, error)
    87  
    88  // Writeはログメッセージをsyslogデーモンに送信します。
    89  func (w *Writer) Write(b []byte) (int, error)
    90  
    91  // Closeはsyslogデーモンへの接続を閉じます。
    92  func (w *Writer) Close() error
    93  
    94  // Emergは、severity [LOG_EMERG] のメッセージをログに記録します。Newに渡されたseverityは無視されます。
    95  func (w *Writer) Emerg(m string) error
    96  
    97  // Alertは、severity [LOG_ALERT] のメッセージをログに記録します。Newに渡されたseverityは無視されます。
    98  func (w *Writer) Alert(m string) error
    99  
   100  // Critは、severity [LOG_CRIT] のメッセージをログに記録します。Newに渡されたseverityは無視されます。
   101  func (w *Writer) Crit(m string) error
   102  
   103  // Errは、severity [LOG_ERR] のメッセージをログに記録します。Newに渡されたseverityは無視されます。
   104  func (w *Writer) Err(m string) error
   105  
   106  // Warningは、severity [LOG_WARNING] のメッセージをログに記録します。Newに渡されたseverityは無視されます。
   107  func (w *Writer) Warning(m string) error
   108  
   109  // Noticeは、severity [LOG_NOTICE] のメッセージをログに記録します。Newに渡されたseverityは無視されます。
   110  func (w *Writer) Notice(m string) error
   111  
   112  // Infoは、severity [LOG_INFO] のメッセージをログに記録します。Newに渡されたseverityは無視されます。
   113  func (w *Writer) Info(m string) error
   114  
   115  // Debugは、severity [LOG_DEBUG] のメッセージをログに記録します。Newに渡されたseverityは無視されます。
   116  func (w *Writer) Debug(m string) error
   117  
   118  // NewLoggerは、指定された優先度(syslog施設とseverityの組み合わせ)でシステムログサービスに書き込まれる [log.Logger] を作成します。
   119  // logFlag引数は、Loggerを作成するために [log.New] に渡されるフラグセットです。
   120  func NewLogger(p Priority, logFlag int) (*log.Logger, error)