在Golang中,我們可以使用正則表達式(regexp)庫來提取日志中的關鍵信息。以下是一個簡單的示例,展示了如何從日志字符串中提取關鍵信息:
package main
import (
"fmt"
"regexp"
)
func main() {
log := `2021/08/01 12:34:56 INFO: User 12345 logged in from IP 192.168.1.1`
// 定義正則表達式模式
pattern := `(\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}) (\w+): User (\d+) logged in from IP (\d+\.\d+\.\d+\.\d+)`
// 編譯正則表達式
re, err := regexp.Compile(pattern)
if err != nil {
fmt.Println("Error compiling regex:", err)
return
}
// 在日志字符串中查找匹配項
match := re.FindStringSubmatch(log)
if match != nil {
fmt.Println("Date and Time:", match[1])
fmt.Println("Log Level:", match[2])
fmt.Println("User ID:", match[3])
fmt.Println("IP Address:", match[4])
} else {
fmt.Println("No match found")
}
}
在這個示例中,我們首先定義了一個日志字符串,然后創建了一個正則表達式模式來匹配日期、時間、日志級別、用戶ID和IP地址。接下來,我們使用regexp.Compile()
函數編譯正則表達式,并使用FindStringSubmatch()
方法在日志字符串中查找匹配項。如果找到匹配項,我們將提取并打印關鍵信息。
這個示例僅用于演示目的,實際應用中可能需要根據日志格式和需求進行調整。