Comment développer un système simple de gestion des journaux à l'aide du langage MySQL et Go
Introduction :
Le journal est un composant important souvent utilisé dans le développement de logiciels. Il peut nous aider à suivre les problèmes, à enregistrer les opérations des utilisateurs, à surveiller les performances du système, etc. . Dans cet article, je vais vous apprendre à développer un système de gestion de journaux simple en combinant MySQL et le langage Go, et vous fournirai des exemples de code spécifiques.
1. Configuration de l'environnement
Avant de commencer, nous devons configurer l'environnement de développement. Tout d'abord, assurez-vous d'avoir installé la base de données MySQL et créé la table de journal correspondante. Deuxièmement, installez la dernière version de l'environnement de développement du langage Go pour vous assurer que votre code peut s'exécuter correctement.
2. Créez le projet
$ mkdir log_management_system $ cd log_management_system $ go mod init log_management_system
3. Connectez-vous à la base de données MySQL
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") // 后续代码将在此处编写 }
Ici, nous utilisons deux packages : database/sql
et github.com/go-sql-driver/mysql
. Le premier est l'interface de base de données intégrée de. Go langage. Ce dernier est un pilote de base de données MySQL. database/sql
和github.com/go-sql-driver/mysql
两个包,前者是Go语言内置的数据库接口,后者是MySQL数据库驱动。
四、创建日志表
logs
logs
dans la base de données MySQL. 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 }
Appelez les fonctions d'insertion de journaux et d'interrogation des journaux dans la fonction principale.
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) } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!