スライスログフィルタ関数の実装
スライスベースのログフィルタリング機能を開発し、特定のキーワードに一致するログメッセージの内容(タイムスタンプを除く)のみを抽出してください。
タスク
- ログエントリのスライスとキーワードを受け取る
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]
ヒント
- ログの反復処理:
for ループを使用して、各ログエントリを順番にチェックします。
- キーワードの検索: ログ内で
"<KEYWORD>: " というパターンを探します。
- メッセージの抽出: スライス操作(Slicing)を使用して、キーワードと
": " の後の部分を取得します。
- 空の入力への対応: ログまたはキーワードが空の場合は、空のスライスを返します。
- 結果の追加:
append を使用して、一致したメッセージを新しいスライスに追加します。