カテゴリ: Go言語 更新日: 2025/12/10

Go言語のエラー出力(ログ)を整理するテクニック!初心者でもわかるログ管理の基本

Go言語のエラー出力(ログ)を整理するテクニック
Go言語のエラー出力(ログ)を整理するテクニック

先生と生徒の会話形式で理解しよう

生徒

「先生、Go言語でプログラムが失敗したときのエラーをどうやって見やすく記録すればいいんですか?」

先生

「エラーを記録することはとても大事です。Go言語では『ログ』と呼ばれる記録方法があり、整理して出力することで後で調べやすくなります。具体的なテクニックを説明しますね。」

生徒

「ログって何ですか?エラーとどう違うんですか?」

先生

「ログとは、プログラムの動きや問題が起きた時の情報をファイルや画面に書き出すことです。エラーは問題そのもの、ログはその問題の記録や説明と思ってください。」

生徒

「なるほど!具体的にどうやってログを整理するんですか?」

先生

「いくつか基本のテクニックがあります。順番に説明しますよ。」

1. Goの標準logパッケージを使う

1. Goの標準logパッケージを使う
1. Goの標準logパッケージを使う

Goには標準でlogパッケージが用意されていて、エラーやメッセージを簡単に記録できます。log.Printlnを使うとメッセージを日時と一緒に出力してくれます。

日時とは、「いつ」問題が起きたかを記録する大切な情報です。これがあると後でログを見返したときに便利です。


import (
    "log"
)

func main() {
    err := doSomething()
    if err != nil {
        log.Println("エラーが発生しました:", err)
    }
}

func doSomething() error {
    return fmt.Errorf("何か問題が起きました")
}

2. ログの出力先を変えて整理する

2. ログの出力先を変えて整理する
2. ログの出力先を変えて整理する

ログは画面に表示するだけでなく、ファイルに保存することも大切です。ファイルにログを書けば、後からじっくり調べられます。

標準のlogパッケージでは、出力先を自由に変えられるので、ログファイルを作ってそこに書き込むことができます。


import (
    "log"
    "os"
)

func main() {
    file, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    log.SetOutput(file)

    err = doSomething()
    if err != nil {
        log.Println("エラー:", err)
    }
}

3. ログにレベルをつけて分ける

3. ログにレベルをつけて分ける
3. ログにレベルをつけて分ける

ログには「情報」「警告」「エラー」などのレベルがあります。たとえば、軽い注意だけなら「警告(Warning)」、大きな問題なら「エラー(Error)」と分けると、どれが重要かすぐわかります。

Goの標準logパッケージにはレベル機能がありませんが、レベル別にログを整理したいなら、logruszapなどの便利な外部ライブラリを使う方法があります。

外部ライブラリは最初は難しく感じるかもしれませんが、将来的にログをもっと管理したい場合に役立ちます。

4. ログを見やすくする工夫

4. ログを見やすくする工夫
4. ログを見やすくする工夫

ログにはタイムスタンプ(時間の記録)があると便利ですが、もう一歩進んで、エラー発生箇所のファイル名や行番号も一緒に出せると、問題を素早く見つけられます。

標準logパッケージではlog.SetFlagsでこれらの表示を設定できます。


import (
    "log"
)

func main() {
    // 日時、ファイル名、行番号を表示
    log.SetFlags(log.LstdFlags | log.Lshortfile)

    log.Println("ここでエラーが起きました")
}

5. 複数の情報を一度にログ出力する

5. 複数の情報を一度にログ出力する
5. 複数の情報を一度にログ出力する

エラーだけでなく、処理の進み具合や変数の中身をログに残すこともよくあります。これにより、プログラムの状態を詳しく把握できます。

ログには文字列だけでなく、数字や変数の値を組み合わせて書きます。log.Printfを使うと書式を指定して分かりやすく出力できます。


import (
    "log"
)

func main() {
    count := 5
    log.Printf("現在のカウントは %d です", count)
}

6. 覚えておきたいポイント

6. 覚えておきたいポイント
6. 覚えておきたいポイント

ログの整理はトラブル解決に欠かせません。Goの標準logパッケージを使って日時と一緒に記録し、必要に応じてファイル出力やファイル名・行番号の表示を使いましょう。

将来的にはレベル分けや外部ライブラリの利用も検討するとより便利になります。ログはプログラムの健康診断のようなもの。しっかり記録して問題を早く見つけましょう!

Go言語を基礎からスッキリ学びたい人や、 文法だけでなく「実用的な使い方」まで押さえたい人には、 定番の入門書がこちらです。

基礎からわかるGo言語をAmazonで見る

※ Amazon広告リンク

まとめ

まとめ
まとめ

ログ管理の重要性と初心者が理解しておきたい基本

Go言語でログを整理して出力することは、ただエラーを眺めるだけではなく、プログラム全体の状態を把握し、どこで何が起きているのかを正確に追跡するための大切な手がかりになります。ログは、開発中だけでなく運用中にも役に立つ情報源であり、細かな挙動を後から確認できる“記録の履歴書”のような存在です。初心者の方でも、ログを活用する習慣を身につけることで、プログラムの品質や安全性が大きく向上します。 特に、時刻の記録、エラー内容の整理、ファイルへの保存、レベルごとの整理などは、基本でありながら奥が深いポイントです。慌てず一歩ずつ理解していけば、自然と実務でも役に立つログ管理ができるようになります。

初心者向け!最もシンプルなログ出力の例

下のサンプルは、Go言語で「エラーが発生したらログに記録する」という基本中の基本の流れを丁寧にまとめたものです。まずはこの形を理解しておくことが、ログ管理の第一歩となります。


package main

import (
    "log"
    "os"
    "fmt"
)

func main() {
    // ログファイルを準備する
    file, err := os.OpenFile("simple.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
    if err != nil {
        fmt.Println("ログファイルを開けませんでした:", err)
        return
    }
    defer file.Close()

    // ログの出力先をファイルに変更
    log.SetOutput(file)

    // テスト用の処理
    err = doSomething()
    if err != nil {
        log.Println("エラー内容:", err)
    } else {
        log.Println("処理は正常に完了しました")
    }
}

func doSomething() error {
    // 仮のエラーを返す
    return fmt.Errorf("テスト用のエラーが発生しました")
}

このサンプルでは、ログを画面ではなくファイルに保存する方法を示しています。「何が起きたか」を残すだけでなく、「いつ発生したか」も自動的に記録されるため、後から読み返したときに状況を把握しやすくなります。最初は難しく見えるかもしれませんが、プログラムを実行してファイルを覗いてみると、動作がとてもよく理解できます。

ログを読みやすく整えるコツと深めたい学習ポイント

ログをただ出力するだけでは、情報が散らばってしまい、いざ調べるときに大変です。そこで、ログ内容に「日時」「発生場所」「重要度」などの情報を付けて整理しておくと、作業がぐっと楽になります。標準パッケージだけでも、log.SetFlagsを使ってファイル名や行番号を表示させるなど、かなり見やすく整えることができます。 また、複数のエラーや動作状況を同時に出力するときは、書式を指定して見やすくできるlog.Printfが便利です。状況に応じて必要な情報をログに残す習慣を身につけることで、問題の特定がスムーズになり、後続の作業効率が大きく改善します。

先生と生徒の振り返り会話

生徒

「ログってただのメモみたいなものだと思っていましたが、こんなにたくさんの使い方があるんですね!」

先生

「そうなんです。ログを上手に使えるようになると、プログラムがどんな状態なのかがすぐに分かるようになりますよ。エラーの調査もぐっと楽になります。」

生徒

「ログの保存先を変えたり、行番号を出したりできるのも便利ですね。難しそうに見えて意外とシンプルでした。」

先生

「その気づきはとても大事です。最初は基本からで十分ですが、少し慣れてきたらログレベルを導入したり、外部ライブラリにも挑戦してみると良いですよ。ログはプログラムと一緒に成長する知識ですからね。」

関連セミナーのご案内

【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導

「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。

本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。

具体的な開発内容と環境

【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。

【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。

この60分で得られる3つの理解

1. 環境構築の完全な理解

「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。

2. Go言語の基本構造(変数・型)

データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。

3. 読みやすいコードの書き方

ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。

※本講座は、将来的にバックエンドエンジニアクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。

セミナー画像

初めてのGo言語を一緒に学びましょう!

関連記事:
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Go言語
Go言語プログラムの実行方法まとめ!VSCode・ターミナルでの実行手順を解説
New3
Swift
Swift意味とは?プログラミング言語・金融・鳥の違いを徹底解説
New4
Swift
Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.5
Java&Spring記事人気No5
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.6
Java&Spring記事人気No6
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.7
Java&Spring記事人気No7
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.8
Java&Spring記事人気No8
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説