Maison > base de données > tutoriel mysql > le corps du texte

Comment développer un système simple de gestion des journaux en utilisant le langage MySQL et Go

王林
Libérer: 2023-09-21 09:05:14
original
943 Les gens l'ont consulté

Comment développer un système simple de gestion des journaux en utilisant le langage MySQL et Go

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

  1. Créez le répertoire du projet et initialisez go mod dedans :
$ mkdir log_management_system
$ cd log_management_system
$ go mod init log_management_system
Copier après la connexion
  1. Créez un fichier main.go et ouvrez l'éditeur, nous écrirons le programme principal dans ce fichier.

3. Connectez-vous à la base de données MySQL

  1. Importez les packages requis dans le fichier main.go.
package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)
Copier après la connexion
  1. Établissez une connexion à la base de données MySQL dans la fonction principale.
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")
    // 后续代码将在此处编写
}
Copier après la connexion

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/sqlgithub.com/go-sql-driver/mysql两个包,前者是Go语言内置的数据库接口,后者是MySQL数据库驱动。

四、创建日志表

  1. 在MySQL数据库中创建一个名为logs
  2. 4. Créez une table de journaux
  1. Créez une table nommée 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
);
Copier après la connexion

Exécutez une instruction SQL dans la fonction principale pour créer une table de journal.
  1. 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")
        // 后续代码将在此处编写
    }
    Copier après la connexion
  2. 5. Implémentez les fonctions d'écriture de journaux et de requête
  1. Implémentez la fonction d'écriture de journaux.
func insertLog(db *sql.DB, level string, message string) error {
    _, err := db.Exec(`INSERT INTO logs (level, message) VALUES (?, ?)`, level, message)
    return err
}
Copier après la connexion
  1. implémente la fonction d'interrogation des journaux.
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
}
Copier après la connexion


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)
    }
}
Copier après la connexion
🎜 6. Résumé🎜Grâce à l'introduction de cet article, vous avez appris à utiliser le langage MySQL et Go pour développer un système simple de gestion des logs. Nous avons préparé l'environnement de développement, connecté la base de données MySQL, créé la table de journal et implémenté les fonctions d'écriture de journal et de requête. J'espère que cet article pourra vous fournir une référence ou vous aider à développer un système de gestion des journaux dans des projets réels. 🎜

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!