0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Log::debug();でArray to string conversionになって詰まった話。

Posted at

Laravelを触っていてログに出力したい時があると思います。
この変数の中身はきちんと想定している変数の値が入っているのか、とか、配列がどのようにして入っているのか、など。
そういったことを確認する時に、Log::debug();で出力することがかなりあります。
今回はその時にミスったことを備忘録としてまとめていこうと思います。

脱線するのですが、Log::debug();で出す時に、ぜひ初心者の方におすすめしたいのですが、文字連結を用いて、メッセージ付きで今出そうとしているものの説明をつけておいたほうがいいと思います。

例としては、

publick function example (){
    $intArray = array(1,2,3,4,5);
    Log::debug("Value of $intArray in example", $intArray);
}

のように、配列の値を出力する時にや、変数の値を出力する時には、必ずメッセージを付けて出力しましょう。

いやいやちょっと待てよ

数日前のワイ「確かに、いろいろLogを仕込んで置く時にメッセージをつけないと、何の値が出力されたのかわからないからつけるんでしょ。
だったら今出力しようとしているところ以外すべてコメントアウトしておけばいいじゃないか。
そうすれば迷わなくないか。
そもそも、いまこれ以外のLogコメントアウトしてあるからやる必要なくないか。

ということを職場の先輩に行った時に、

先輩「今はそうかも知れないけれども、大規模なサービスになった時にLogをこうやって仕込まないと訳わかんなくなるよ。」

ワイ「なるほど!!!。わかりました!!!」

話を戻します。

このエラーが起きた時に、書いたコードはこういったふうにやりました

Log::debug('Value of $clientsInfo in clientsController@index'. $clientsInfo);

このコードをいざ実行しようとした結果、タイトルのエラーになってしまいました。
このLog::debug();で出力しようとしている$clientsInfoは配列です。
ということは、感の言い方ならもう気づいたかと思います。

文字連結をする時に、ピリオド(.)ではなくカンマ(,)でないと、文字列と配列の連結をするときはうまく行かないのです。

まとめ

文字列と配列を連結させてLogに出力したい場合は、

Log::debug("message",変数);

のように、カンマ(,)を使わないといけない。

ピリオドを文字列と配列で使ってしまうと、

Array to string conversion

になってしまうので注意が必要。

もう一つが、Log::debug();で出力してデバッグをするなら、必ずメッセージを付けること。
になります
ありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?