溫馨提示×

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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女