🦔

エラー文を読もう

2024/06/25に公開

はじめに

現在、あるプロダクトのフレームワークのバージョンをあげる必要がでてきました。対応をしている中でいろんなエラーに遭遇します。昔の自分はすぐにエラー分をググっていたのですが、エラー文にはたくさんの解決のためのキーワードが書いているので、しっかり読むことによって解決することができるので今回はそのことに関してまとめていこうと思います。

実際のエラー文

今回のエラー文は以下のようになっています。一部抜粋しています。

deprecated: 16384 :: Since 5.0.0: Using `false` to disable logging scopes is deprecated. Use `null` instead.
You can disable all deprecation warnings by setting `Error.errorLevel` to `E_ALL & ~E_USER_DEPRECATED`.
Adding `vendor/cakephp/cakephp/src/Log/Engine/FileLog.php`
to `Error.ignoredDeprecationPaths`
in your `config/app.php`config will mute deprecations from that file only. 

エラー文を翻訳にかけると以下のようになります。

非推奨:16384 ::5.0.0 以降: `false` を使ってロギングスコープを無効にすることは推奨されません。代わりに `null` を使用してください。
Error.errorLevel` を `E_ALL & ~E_USER_DEPRECATED` に設定することで、
すべての非推奨警告を無効にすることができます。
また、`vendor/cakephp/cakephp/src/Log/Engine/FileLog.php` を `config/app.php` の `Error.ignoredDeprecationPaths` に追加すると、
そのファイルからの非推奨の警告だけを消すことができます。

解決方法としては以下のような方法があります。

  • 非推奨部分のコードの修正
  • 非推奨警告の無視

非推奨警告の無視は対処法としてはあまり良くなさそうなので、今回は非推奨部分のコードの修正で対応していこうと思います。

修正

公式ドキュメントを参考にしてconfig/app.phpファイルを編集します。

<?php

'Log' => [
        'debug' => [
            'className' => FileLog::class,
            'path' => LOGS,
            'file' => 'debug',
            'url' => env('LOG_DEBUG_URL', null),
            'scopes' => null, // 変更部分
            'levels' => ['notice', 'info', 'debug'],
        ],
        'error' => [
            'className' => FileLog::class,
            'path' => LOGS,
            'file' => 'error',
            'url' => env('LOG_ERROR_URL', null),
            'scopes' => null, // 変更部分
            'levels' => ['warning', 'error', 'critical', 'alert', 'emergency'],
        ],

?>

おわりに

エラー文は英語で書かれている上に量が多かったりするので、どうすればいいかわからなくなってしまうことが多いと思います。しかし見ていたら解決のためのヒントがしっかり書かれているので、大変ですが読んでいくことも大切だと感じました。誰かの助けになれば幸いです。

参考文献

5.0 Migration Guide

Discussion