# 【Elixir】logger_file_backend を使用してログをファイルに出力する方法
> Elixir で logger_file_backend を使用してログをファイルに出力する方法を紹介します。
- Canonical: https://c-a-p-engineer.github.io/elixir-logger_file_backend/
- Published: 2023-04-07T15:40:00.000Z
- Modified: 2023-04-07T15:40:00.000Z
- Categories: Elixir
- Tags: Elixir

Elixir で `logger_file_backend` を使用してログをファイルに出力する方法を紹介します。

## 環境
* Elixir 1.14.2

## logger_file_backend
Elixir では、標準で `Logger` モジュールが提供されており、これを利用して簡単にログを取得できます。
ただし、デフォルトでは標準出力にログが出力されるため、ファイルに出力するには `logger_file_backend` というライブラリを使うことで実現できます。

### logger_file_backend のインストール
まず、`logger_file_backend` をプロジェクトに追加します。
`mix.exs` の `deps` 関数に以下のコードを追加してください。

```mix.exs
defp deps do
  [
    {:logger_file_backend, "~> 0.0.10"}
  ]
end
```
次に、ターミナルで `mix deps.get` コマンドを実行し、依存関係を取得してください。

### 設定ファイルの編集
次に、ログ出力の設定を行います。
`config/config.exs` ファイルに以下の設定を追加してください。

```config/config.exs
# ロガーの設定
config :logger,
  backends: [{LoggerFileBackend, :info_log}, {LoggerFileBackend, :error_log}, :console]

# infoログの設定
config :logger, :info_log,
  level: :info,
  path: "log/info.log",
  format: "$time $metadata[$level] $message\n",
  metadata: [:request_id]

# errorログの設定
config :logger, :error_log,
  level: :error,
  path: "log/error.log",
  format: "$time $metadata[$level] $message\n",
  metadata: [:request_id]
```

この設定では、`log/info.log` に情報レベル（`:info`）のログが、`log/error.log` にエラーレベル（`:error`）のログがそれぞれ出力されるようになります。また、ログのフォーマットやメタデータも指定できます。

### ログの出力
設定が完了したら、あとは通常通り `Logger` モジュールを使用してログを出力できます。

たとえば、以下のように `Logger.info/2` や `Logger.error/2` を使ってログを出力できます。

```elixir
Logger.info("情報レベルのログです。")
Logger.error("エラーレベルのログです。")
```
これで、指定したファイルにログが出力されるようになります。

## 参考
* <a href="https://hexdocs.pm/logger_file_backend/0.0.13/readme.html" target="_blank" rel="nofollow noopener">Overview — logger_file_backend v0.0.13</a>
