在Debian上使用Golang編寫的應用程序,可以通過多種方式來過濾日志。以下是一些常見的方法:
package main
import (
"log"
"os"
)
var logger = log.New(os.Stdout, "", log.LstdFlags)
func main() {
logger.SetOutput(os.Stdout)
logger.SetPrefix("INFO: ")
logger.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
logger.Println("This is an info message")
logger.SetPrefix("ERROR: ")
logger.Println("This is an error message")
}
logrus
或zap
,這些庫提供了更豐富的日志功能,包括日志級別、日志格式化、日志輸出等。package main
import (
"github.com/sirupsen/logrus"
)
func main() {
logrus.SetFormatter(&logrus.JSONFormatter{})
logrus.SetReportCaller(true)
logrus.SetLevel(logrus.InfoLevel)
logrus.Info("This is an info message")
logrus.WithFields(logrus.Fields{
"animal": "walrus",
"size": 10,
}).Info("A group of walrus emerges from the ocean")
}
grep
)來過濾日志。package main
import (
"log"
"os"
)
func main() {
logFile, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
log.Fatal(err)
}
defer logFile.Close()
logger := log.New(logFile, "", log.LstdFlags)
logger.Println("This will be written to app.log")
}
在終端中使用grep
過濾日志:
grep "ERROR" app.log
logrotate
,來管理日志文件的大小和數量。logrotate
可以配置為按大小或時間輪轉日志文件,并且可以壓縮舊日志文件。創建一個logrotate
配置文件:
/path/to/your/app.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 root root
}
將此配置文件保存到/etc/logrotate.d/
目錄下,logrotate
會自動處理日志文件的輪轉。
tail -f
,來實時查看日志文件的最新內容。tail -f /path/to/your/app.log
結合grep
使用實時監控:
tail -f /path/to/your/app.log | grep "ERROR"
這些方法可以幫助你在Debian上有效地過濾和管理Golang應用程序的日志。