登录
首页 >  Golang >  Go问答

使用 Go 将日志传输到 Rsyslog 服务器

来源:stackoverflow

时间:2024-03-03 21:06:22 121浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《使用 Go 将日志传输到 Rsyslog 服务器》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

我编写了一个代码来将日志发送到ubuntu上的rsyslog服务器,该代码具有以下内容。在ryslogd.conf文件中我配置了local7.* /var/log/test.log.*但是运行时日志并没有写入test.log *

package main
import (
        "errors"
        "fmt"
        "log/syslog"
        "os"
        "path/filepath"
)

func main() {
        programName := filepath.Base(os.Args[0])
        fmt.Println(programName)
        syslog_pointer, err := syslog.Dial("udp", "localhost:514", syslog.LOG_WARNING|syslog.LOG_LOCAL7, "test")
        if err != nil {
                err_exception := errors.New("Can't connect to syslog server localhost:514")
                fmt.Println(err_exception)
                os.Exit(1)
        } else {
                syslog_pointer.Emerg("This is log test")
        }
}

我想要日志行:这是要写入文件 /var/log/test.log 的测试日志


正确答案


本地日志记录通常通过 unix 套接字进行。通常需要为 syslog 服务器显式启用 udp 日志记录。

通过 syslog.new 创建 syslog.writer 将首先尝试通过常见的 unix 套接字进行连接,然后尝试通过 localhost 进行 udp:

package main

import (
    "log"
    "log/syslog"
)

func main() {
    s, err := syslog.New(syslog.LOG_WARNING|syslog.LOG_LOCAL7, "test")
    if err != nil {
        log.Fatal(err)
    }
    
    s.Emerg("log test")
}

好了,本文到此结束,带大家了解了《使用 Go 将日志传输到 Rsyslog 服务器》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>