スライスログフィルターチャレンジ

GolangGolangBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このチャレンジでは、スライスベースのログフィルタリング関数を開発し、関連するログメッセージを処理および抽出します。効率的なログフィルタリングは、潜在的なセキュリティ脅威を特定するために、サイバーセキュリティの急速な世界において重要です。目標は、指定されたキーワードに基づいてログメッセージをフィルタリングする filterLogs 関数を実装することで、この関数は大文字と小文字を区別し、空のスライスやキーワードを適切に処理する必要があります。さらに、この関数はタイムスタンプやその他のメタデータを除外し、メッセージ内容のみを返す必要があります。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/DataTypesandStructuresGroup(["Data Types and Structures"]) go(("Golang")) -.-> go/FunctionsandControlFlowGroup(["Functions and Control Flow"]) go/DataTypesandStructuresGroup -.-> go/strings("Strings") go/DataTypesandStructuresGroup -.-> go/slices("Slices") go/FunctionsandControlFlowGroup -.-> go/for("For") subgraph Lab Skills go/strings -.-> lab-436686{{"スライスログフィルターチャレンジ"}} go/slices -.-> lab-436686{{"スライスログフィルターチャレンジ"}} go/for -.-> lab-436686{{"スライスログフィルターチャレンジ"}} end

スライスログフィルター関数の実装

指定されたキーワードに対して、スライスベースのログフィルタリング関数を開発し、ログメッセージの内容のみ(タイムスタンプを除く)を処理および抽出します。

タスク

  • ログエントリのスライスとキーワードを引数に取る filterLogs 関数を実装します。
  • この関数は、指定されたキーワードを含むログエントリのメッセージ内容のみを含む新しいスライスを返す必要があります。
  • 関数は大文字と小文字を区別するようにします。
  • Go のスライス操作を使用して、ログエントリをフィルタリングおよび処理します。
  • 空のスライスや空のキーワードを適切に処理します。

要件

  • 実装は ~/project/logfilter.go ファイルに作成します。
  • 関数は元のスライスを変更せず、処理結果を含む新しいスライスを返すようにします。
  • フィルタリングに外部ライブラリを使用しないでください。
  • キーワードの後のメッセージ内容のみを抽出して返します(例: "2023-06-15 ERROR: Disk is almost full" ではなく "Disk is almost full")。
  • 文字列操作関数を使用してログを処理します。

以下のログエントリが与えられた場合:

logs := []string{
    "2023-06-15 ERROR: Security breach detected",
    "2023-06-15 INFO: System startup completed",
    "2023-06-15 WARN: Unauthorized access attempt",
    "2023-06-15 ERROR: Disk is almost full",
    "2023-06-15 INFO: User login",
    "2023-06-15 WARN: System temperature too high",
}
go run logfilter.go

出力:

Error Logs: [Security breach detected Disk is almost full]
Warning Logs: [Unauthorized access attempt System temperature too high]
Info Logs: [System startup completed User login]

ヒント

  1. ログの反復処理: for ループを使用して各ログエントリをチェックします。
  2. キーワードの検索: ログ内で "<KEYWORD>: " のパターンを探します。
  3. メッセージの抽出: スライシングを使用して、キーワードと ": " の後の部分を取得します。
  4. 空の入力の処理: ログまたはキーワードが空の場合は、空のスライスを返します。
  5. 結果の追加: append を使用して、一致するメッセージを新しいスライスに追加します。
✨ 解答を確認して練習

まとめ

要するに、このチャレンジでは、指定されたキーワードに基づいて、ログ文字列のスライスから関連するログメッセージ(メタデータを除く)を効率的に処理および抽出する filterLogs 関数を実装する必要があります。この関数は大文字と小文字を区別し、空のスライスやキーワードを適切に処理し、Go のスライスと文字列操作を使用してログメッセージをフィルタリングし、処理済みのログメッセージを返す能力を示す必要があります。