So entwickeln Sie ein einfaches Protokollverwaltungssystem mit MySQL und Go-Sprache
Einführung:
Protokoll ist eine wichtige Komponente, die häufig in der Softwareentwicklung verwendet wird. Es kann uns helfen, Probleme zu verfolgen, Benutzervorgänge aufzuzeichnen, die Systemleistung zu überwachen usw. . In diesem Artikel zeige ich Ihnen, wie Sie durch die Kombination von MySQL und Go ein einfaches Protokollverwaltungssystem entwickeln, und stelle Ihnen spezifische Codebeispiele zur Verfügung.
1. Umgebungseinrichtung
Bevor wir beginnen, müssen wir die Entwicklungsumgebung einrichten. Stellen Sie zunächst sicher, dass Sie die MySQL-Datenbank installiert und die entsprechende Protokolltabelle erstellt haben. Zweitens installieren Sie die neueste Version der Go-Sprachentwicklungsumgebung, um sicherzustellen, dass Ihr Code ordnungsgemäß ausgeführt werden kann.
2. Erstellen Sie das Projekt
$ mkdir log_management_system $ cd log_management_system $ go mod init log_management_system
3. Stellen Sie eine Verbindung zur MySQL-Datenbank her.
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" )
func main() { db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/log?charset=utf8") if err != nil { panic(err.Error()) } defer db.Close() err = db.Ping() if err != nil { panic(err.Error()) } fmt.Println("Successfully connected to MySQL database") // 后续代码将在此处编写 }
Hier verwenden wir zwei Pakete: database/sql
und github.com/go-sql-driver/mysql
. Ersteres ist die integrierte Datenbankschnittstelle von Go-Sprache. Letzteres ist ein MySQL-Datenbanktreiber. database/sql
和github.com/go-sql-driver/mysql
两个包,前者是Go语言内置的数据库接口,后者是MySQL数据库驱动。
四、创建日志表
logs
logs
in der MySQL-Datenbank. CREATE TABLE logs ( id INT AUTO_INCREMENT PRIMARY KEY, level VARCHAR(10) NOT NULL, message VARCHAR(255) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP );
func main() { // 数据库连接代码... _, err = db.Exec(`CREATE TABLE IF NOT EXISTS logs ( id INT AUTO_INCREMENT PRIMARY KEY, level VARCHAR(10) NOT NULL, message VARCHAR(255) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP )`) if err != nil { panic(err.Error()) } fmt.Println("Successfully created logs table") // 后续代码将在此处编写 }
func insertLog(db *sql.DB, level string, message string) error { _, err := db.Exec(`INSERT INTO logs (level, message) VALUES (?, ?)`, level, message) return err }
func queryLogs(db *sql.DB) ([]Log, error) { rows, err := db.Query(`SELECT * FROM logs ORDER BY created_at DESC`) if err != nil { return nil, err } defer rows.Close() logs := []Log{} for rows.Next() { var log Log err := rows.Scan(&log.ID, &log.Level, &log.Message, &log.CreatedAt) if err != nil { return nil, err } logs = append(logs, log) } return logs, nil } type Log struct { ID int Level string Message string CreatedAt time.Time }
Rufen Sie die Funktionen zum Einfügen von Protokollen und zum Abfragen von Protokollen in der Hauptfunktion auf.
func main() { // 数据库连接代码与创建日志表代码... err = insertLog(db, "INFO", "This is an info message") if err != nil { panic(err.Error()) } logs, err := queryLogs(db) if err != nil { panic(err.Error()) } for _, log := range logs { fmt.Printf("ID: %d, Level: %s, Message: %s, CreatedAt: %s ", log.ID, log.Level, log.Message, log.CreatedAt) } }
Das obige ist der detaillierte Inhalt vonSo entwickeln Sie ein einfaches Protokollverwaltungssystem mit MySQL und der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!