centos

Golang日志在CentOS中如何归档

小樊
51
2025-07-18 21:22:33
栏目: 编程语言

在CentOS系统中,使用Golang编写的应用程序可以通过以下方法实现日志归档:

  1. 使用第三方库:有许多第三方库可以帮助您实现日志归档,例如logruszap。这些库通常提供了日志轮转(log rotation)功能,可以在日志文件达到指定大小或时间间隔时自动归档。

logrus为例,您可以这样实现日志归档:

package main

import (
	"github.com/sirupsen/logrus"
	"os"
	"time"
)

func main() {
	logrus.SetFormatter(&logrus.JSONFormatter{})
	logrus.SetOutput(os.Stdout)

	logFile, err := os.OpenFile("logs/app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	if err == nil {
		logrus.SetOutput(logFile)
	} else {
		logrus.Info("Failed to log to file, using default stderr")
	}

	logrus.Info("Starting application...")

	// 模拟应用程序运行
	for {
		logrus.Info("Application is running...")
		time.Sleep(1 * time.Second)
	}
}
  1. 使用系统日志服务:您还可以将Golang应用程序的日志发送到CentOS的系统日志服务(如rsyslogsyslog-ng),这些服务通常会自动处理日志归档。

要将Golang应用程序的日志发送到rsyslog,您可以使用第三方库,如gosyslog

package main

import (
	"github.com/RackSec/srs-lib-go/log"
	"os"
)

func main() {
	log.SetLogger("file", `{"filename":"/var/log/app.log"}`)
	log.Info("Starting application...")

	// 模拟应用程序运行
	for {
		log.Info("Application is running...")
	}
}

然后,您需要在rsyslog配置文件(通常位于/etc/rsyslog.conf/etc/rsyslog.d/50-default.conf)中添加以下行,以便将Golang应用程序的日志发送到指定的文件:

*.info;mail.none;authpriv.none;cron.none                /var/log/app.log

最后,重启rsyslog服务以应用更改:

sudo systemctl restart rsyslog

这样,您的Golang应用程序的日志将被发送到/var/log/app.log,并由rsyslog自动处理归档。

0
看了该问题的人还看了