検索
ホームページバックエンド開発Golanggolang ログローテーション

Golang ログ ローテーション

アプリケーションの継続的な開発に伴い、ログ ファイルがますます大きくなるのは避けられない問題です。長時間実行されるアプリケーションの場合、ログ ファイルが数ギガバイトに達する可能性があり、これによりディスク領域の問題が発生し、ログ ファイルを開いたり読み取ったりする速度が遅くなる可能性があります。したがって、優れたアプリケーションには、ログ ファイルの合理的な管理とローテーションが非常に必要です。

Golang では、ログ パッケージ、zap、logrus などの強力なログ ライブラリがいくつか提供されています。これらのログ ライブラリの共通点は、ログ ファイルを生成することですが、ログ ファイルが大きくなりすぎる場合は、ログ ファイルのローテーションを考慮する必要があります。

Golang ログ モジュールのログ レベル

Golang ログ モジュールは、最も低いレベルの Debug から始めて、Debug、Info、Warning、Error、Fatal、Panic などのさまざまなログ レベルを定義します。それらの定義は次のとおりです。

const (
    Ldate         = 1 <p>ログには、現在のログ レベルよりも高いレベルのログのみを記録する必要があります。これは、より高いレベルのログの方が緊急性が高いためです。ログ レベルは、エラーの診断に役立つだけでなく、ログに記録される内容を制御することもできます。たとえば、デバッグ レベルのロガーにはより多くの情報を記録し、リリース ビルドではエラーまたは警告に関する情報のみを記録できます。 </p><p>ログ ファイルのローテーション</p><p>Golang では、ログのローテーションはプログラマによって制御されます。ログ ローテーションを実装するための一般的な手法は、レプリケーションと圧縮です。ログ ファイルが特定のサイズまたは間隔に達したら、名前を変更して新しいログ ファイルを作成する必要があります。 </p><p>ログ ローテーションを実現するには、次の 2 つの方法を選択できます: </p><p>1. 時間によるローテーション: この方法は時間を軸にし、毎日 1 つのファイルを保存し、記録のみを保存します。デイリーログファイル 今日のログ。翌日プログラムが開始されると、新しいログ ファイルが作成され、古いログ ファイルは圧縮または削除されます。欠点は、その日のうちにファイル サイズ制限を超えないという保証がないことです。 </p><p>2. ファイル サイズによる回転: この方法では、ファイル サイズを軸として使用し、ログ ファイルが特定のサイズ制限に達すると、名前が変更され、新しいログ ファイルが作成されます。欠点は、ログ ファイルを時間に基づいて区別できないことです。 </p><p> 以下では、Golang コードを使用してファイル サイズに基づいてログ ローテーションを実装する方法を段階的に紹介します。 </p><p>ログ ローテーションに Lumberjack ライブラリを使用する</p><p>Lumberjack は、ファイル サイズに応じてログ ファイルをローテーションするために使用される信頼性の高いログ ライブラリです。複数のログ ファイルの並列書き込みをサポートし、Go の機能を利用して競合状態を回避します。 Lumberjack は古いログ ファイルを自動的に圧縮して、ディスク領域を節約することもできます。 </p><p>最初に簡単な例を見てみましょう: </p><pre class="brush:php;toolbar:false">package main

import (
    "github.com/natefinch/lumberjack"
    "log"
)

func main() {
    logger := &lumberjack.Logger{
        Filename:   "./log/test.log",
        MaxSize:    5, // megabytes
        MaxBackups: 3,
        MaxAge:     28, // days
    }

    log.SetOutput(logger)

    // 测试日志轮转
    for i := 0; i <p>上記のコードでは、ログ ローテーションに Lumberjack ログ ライブラリを使用します。ログ ファイル ./log/test.log を出力ファイルとして設定し、ファイル サイズ制限を 5 MB、バックアップの最大数を 3、最大保存日数を 28 日に設定します。ログ ファイルのサイズが 5 MB を超えると、Lumberjack はデータを新しいファイルに書き込み、古いファイルを .1、.2、または .3 バックアップとして保存します。バックアップ数が 3 つを超えると、古いバックアップ ファイルが削除されます。古いログが 28 日を超えると、自動的に削除されます。 </p><p>12,000 サイクル後、./log ディレクトリに生成されたログ ファイルが表示されます。 Lumberjack がログ ファイルを自動的にさまざまな部分に分割し、指定された時間内に一部の古いログ ファイルを自動的に削除したことがわかります。 </p><p>一般的なログ ローテーション</p><p>時間によるログのローテーションの一般的な構成は次のとおりです: </p><pre class="brush:php;toolbar:false">logger := &lumberjack.Logger{
    Filename:   logPath,
    MaxSize:    0,
    MaxBackups: 0,
    MaxAge:     7,  // 保留最近 7 天的日志
    LocalTime:  true,
    Compress:   true, // 压缩日志文件
}

ファイル サイズによるログのローテーションの一般的な構成は次のとおりです:

logger := &lumberjack.Logger{
    Filename:   logPath,
    MaxSize:    100, // megabytes
    MaxBackups: 5,
    MaxAge:     30, // 保留最近 30 天的日志
    LocalTime:  true,
    Compress:   true, // 压缩日志文件
}

概要

Golang では、Lumberjack ログ ライブラリを使用して自動ログ ローテーションを実装し、大きすぎるログ ファイルの問題を解決できます。柔軟な構成により、必要に応じてログ ローテーションの時間やファイル サイズを選択し、古いログ ファイルを自動的に削除できます。これは、最小ストレージ要件を満たすログ ファイルの問題を解決するだけでなく、アプリケーションがスムーズに実行され、大きなログ ファイルの影響を受けないようにすることにも役立ちます。

以上がgolang ログローテーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Go Binary Encoding/Decoding:「エンコード/バイナリ」パッケージを使用してくださいGo Binary Encoding/Decoding:「エンコード/バイナリ」パッケージを使用してくださいMay 08, 2025 am 12:13 AM

GOは、バイナリエンコードとデコードに「エンコード/バイナリ」パッケージを使用します。 1)このパッケージは、binary.writeとbinary.read関数を作成して、データを書き込み、読み取ります。 2)正しいエンディアン(BigendianやLittleendianなど)の選択に注意してください。 3)データのアラインメントとエラー処理も重要です。データの正確性とパフォーマンスを確保します。

GO:標準の「バイト」パッケージを使用したバイトスライス操作GO:標準の「バイト」パッケージを使用したバイトスライス操作May 08, 2025 am 12:09 AM

「バイト」パッケージを包装してください

エンコード/バイナリパッケージに移動:バイナリ操作のパフォーマンスの最適化エンコード/バイナリパッケージに移動:バイナリ操作のパフォーマンスの最適化May 08, 2025 am 12:06 AM

Encoding/binaryPackageIngoiseffictevectiveforptimizingdueToitssuportforendiannessandannessandAhandling.toenhanceperformance:1)usebinary.native.nativedianfornatiannesstoavoidbyteswapping.2)batchedandandandwriteTerationtoredutei/ober

BYTESパッケージに移動:短いリファレンスとヒントBYTESパッケージに移動:短いリファレンスとヒントMay 08, 2025 am 12:05 AM

GOのBYTESパッケージは、主にバイトスライスを効率的に処理するために使用されます。 1)bytes.bufferを使用すると、弦のスプライシングを効率的に実行して、不必要なメモリの割り当てを避けます。 2)バイト機能を使用して、バイトスライスをすばやく比較します。 3)bytes.index、bytes.split、bytes.replaceall関数は、バイトスライスの検索と操作に使用できますが、パフォーマンスの問題に注意する必要があります。

BYTESパッケージに移動:バイトスライス操作の実用的な例BYTESパッケージに移動:バイトスライス操作の実用的な例May 08, 2025 am 12:01 AM

バイトパッケージは、バイトスライスを効率的に処理するためのさまざまな機能を提供します。 1)bytes.containsを使用して、バイトシーケンスを確認します。 2)bytes.splitを使用してバイトスライスを分割します。 3)バイトシーケンスバイトを交換します。 4)bytes.joinを使用して、複数のバイトスライスを接続します。 5)bytes.bufferを使用してデータを作成します。 6)エラー処理とデータ検証のためのBYTES.MAPの組み合わせ。

バイナリエンコード/デコードに移動:例を備えた実用的なガイドバイナリエンコード/デコードに移動:例を備えた実用的なガイドMay 07, 2025 pm 05:37 PM

GOのエンコード/バイナリパッケージは、バイナリデータを処理するためのツールです。 1)小エンディアンおよび大規模なエンディアンバイト順序をサポートし、ネットワークプロトコルとファイル形式で使用できます。 2)複雑な構造のエンコードとデコードは、読み取りおよび書き込み関数を介して処理できます。 3)特に異なるシステム間でデータが送信される場合、それを使用するときに、バイトの順序とデータ型の一貫性に注意してください。このパッケージは、バイナリデータの効率的な処理に適していますが、バイトスライスと長さを慎重に管理する必要があります。

「バイト」パッケージ:比較、結合、分割など「バイト」パッケージ:比較、結合、分割などMay 07, 2025 pm 05:29 PM

「バイト」パッケージを積極的に使用してください

Go Stringsパッケージ:知る必要がある必須関数Go Stringsパッケージ:知る必要がある必須関数May 07, 2025 pm 04:57 PM

go'sstringspackageincludesentionsentionslikecontains、trimspace、split、andreplaceall.1)

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール