• ベストアンサー

laravel、ログの共通化について

laravelで開発をしてみています。 大まかな流れとしては、request→controller→serviceクラスのような構成にしています。 serviceクラスの各メソッドが呼び出された際に、そのメソッドの開始・終了のログを出したいです。 出し方としては、メソッド毎にLog::inifo()等の記載をすれば良いと思っていますがその記載が無くても自動で出力できるような仕組みはないでしょうか。 middlewear,serviceproviderあたりでできそうな気がしているのですが、、、 ご教示いただけますと幸いです。

  • PHP
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • t_hirai
  • ベストアンサー率27% (157/577)
回答No.1

こんなやつでしょうか? ちょっとバージョンが古いですが、このミドルのlaravel10(あたり?)を探してみて下さい。 https://qiita.com/toontoon/items/38496c20d793746cc0ec

関連するQ&A

  • laravelでのログ制御

    laravel1で開発をしております。 Log::info等でログ出力をしているのですが、特定のパラメーターだけ出力したくないです。 ミドルウェアやその他laravelの機能で制御する方法はないでしょうか。 例えば、 class SampleController extends Controller { public function sample(Request $request){ Log::info($request); return 'somevalue'; } } $requestの中にpassword:hogeがあった場合に、Log::info($request)でそれを出力しないようにしたいです。

    • ベストアンサー
    • PHP
  • LaravelのコントローラーにプロパティはOK?

    お世話になっております。 保守開発でPHPの案件に参画したのですが、既存のソースコードを見たところ、 コントローラーの実装で以下のようなものがありました。 class HogeController extends Controller { private $hoge = null; public function index(Request $request_) { $this->hoge = new stdClass; .... } public function next(Request $request_) { $foo = $this->hoge->foo; .... } .... コントローラーにインスタンス変数(プロパティ)があって、 それに対していろいろと処理をしているのですが、 この実装は問題ないでしょうか? JavaでWebのMVCを開発してきた経験からすると、コントローラーは Singleton である場合が多いのではないかと思うのです。 当案件での実行環境等は、PHP7.2, Laravel5.6 です。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • [log4j]ログ出力クラスでのメソッド名出力方法

    お世話になっております。 現在log4jを使用したログの出力を検討しております。 その中で1点質問させてください。 Javaの初心者のため、質問がわかりにくいかもしれません。 申し訳ございません。 【質問】 クラスAのinit処理の中でログ出力用クラスBをインスタンス化し、 クラスAのメソッドCの中で、ログ出力用クラスBのログ出力メソッドDを実行することでログ出力させる方法を考えております。 ここでメソッドDで出力させるログの中にメソッドCの名前を出力させたいのですが、 方法がわかりません。 わかる方、教えていただけないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • Java ログ出力方法

    バッチプログラムを作成中なのですが、ログの出し方で悩んでいます。 ログファイルを「バッチID」と「処理日付」の組み合わせで動的に変更したいと思っています。 また、ログは各クラスで出力したいと思っています。 悩んでいる箇所は ・どのようにしてバッチIDを動的に取得してログファイル名として設定するか ・複数のパッケージのクラスを使用するバッチの一連の処理をどのようにして一つのログファイルに出力するか の2点あり、対応方法が検討もつかない状態です。 使用しているライブラリはlog4j 1.2.16.jarです。 アドバイスをいただけないでしょうか。 よろしくお願いいたします。 例として、下記のようなバッチを考えています。 foo.bar.mainパッケージにはpublic static void main(String[] args)のメソッドをもつクラスを配置します。 foo.bar.commonパッケージにはfoo.bar.mainに配置したクラスから共通で利用する処理を実装したクラスを配置します。 foo.bar.main +- Batch1.class +- Batch2.class ・ ・ ・ foo.bar.common +- Common1.class +- Common2.class +- Common3.class ・ ・ ・ 処理の流れで言うと、 Batch1を実行する場合 1. javaコマンドでBatch1実行、Batch1クラスでログを出力 2. Batch1からCommon1クラスのメソッドを実行、Common1クラスでログを出力 3. Batch1からCommon2クラスのメソッドを実行、Common2クラスでログを出力 4. 処理終了 ログは「Batch1_20120612.log」に全て出力される。 Batch2を実行する場合 1. javaコマンドでBatch2実行、Batch2クラスでログを出力 2. Batch2からCommon1クラスのメソッドを実行、Common1クラスでログを出力 3. Batch2からCommon3クラスのメソッドを実行、Common3クラスでログを出力 4. 処理終了 ログは「Batch2_20120612.log」に全て出力される。

    • ベストアンサー
    • Java
  • log4jはメソッドごとにインスタンスをゲットしないといけない???

    Servlet-JSPの開発をしています。 log出力のためにlog4jを使うことにしましたが、 メソッドごとに Logger logger = Logger.getLogger("TEST"); BasicConfigurator.configure(); logger.setLevel(Level.INFO); という記述を書かないと、出力されません。 この方法しかないのでしょうか? それとも他にまとめることもできるのでしょうか?

  • syslogでログファイルの出力方法

    現在、syslogを利用してログファイルを出力しようと思っています。 syslogというサービスを利用する事を教えて頂き、syslog.confを書き換えて Linux上でsyslogのサービスは起動しており、ファイルが自動的に作成されました。 (パーミッションが600なので644にしたいのですが、ひとまず置いておき、 手動でテスト的に777に変更しました) しかし、syslogのサービスが正常に動作しているかの確認は出来ておりません。 それでいてPHPからログが出力されるようにするコーディングが分かりません。 別環境の他のスクリプトで既に実績があるのですが、書き方が違う分、ダメなのかもしれません。 初めて使うので、定数が実際に何を意味しているのかがPHPのマニュアルを見ても意味不明です。 宜しければPHPを介在しない、syslogが正常に動作してログを出力してくれるLinuxのコマンドと、 PHPでのsyslogの書き方をご教示下さい。 現在、スクリプトはこんな感じです。 A.php $abc = LOG_LOCAL5; //実際はメソッドの引数(参照渡し) //↓実際は別クラスのメソッド $log = "test"; define_syslog_variables(); openlog('log', LOG_PID | LOG_PERROR, $abc); syslog(LOG_NOTICE, $log); closelog();

    • 締切済み
    • PHP
  • ログについて

    プログラムを書いたのですが、ログをファイルで出力させたいと思いました。 (1)Loggerというクラスがあるのはわかったのですが、記述の仕方がよくわかりません。例えば、ソケット通信時にどのようなデータがどこに送られているかをログに取りたい場合はどこにどのように記述すればよいのでしょうか。 FileHandler handler = new FileHandler("/tmp/java.log"); Logger logger = Logger.getLogger("Sample"); handler.setFormatter(new SimpleFormatter()); logger.addHandler(handler); logger.setLevel(Level.ALL); try { ... DatagramSocket soc = new DatagramSocket(10000); DatagramPacket sendPacket = new DatagramPacket(sendBuffer, sendBuffer.length, remoteHost, destPort); soc.send(sendPacket); ... (2)アホな質問で恐縮ですが、ログというのは出力したい箇所に一つ一つ書いていかなければならないものなのでしょうか?そうするとプログラムが2倍近くの長さになりそうなのですが。。一旦書き上げたプログラムにちょろっと設定を足すだけで、メソッドを実行した箇所などを一括してログに取るようなことは出来ないのでしょうか?

    • ベストアンサー
    • Java
  • log4jが連続して同じログを

    JSFにて、log4jでログファイルにログ出力を行っているのですが、一回のログ出力メソッド呼び出しで、同じログが2~8行出力されてしまいます。 例) yy/MM/dd HH:mm:ss.853, WARN , .... yy/MM/dd HH:mm:ss.853, WARN , .... yy/MM/dd HH:mm:ss.853, WARN , .... yy/MM/dd HH:mm:ss.853, WARN , .... yy/MM/dd HH:mm:ss.853, WARN , .... yy/MM/dd HH:mm:ss.853, WARN , .... yy/MM/dd HH:mm:ss.853, WARN , .... yy/MM/dd HH:mm:ss.853, WARN , .... ミリ秒単位で同じなので、一回出力されれば十分なのですが、複数行出力されています。 短時間で、かなりのサイズになってしまうため、困惑しております。 この事象の解決方法をご存じの方、解決方法をご教示願います。

  • 【VC#】Windowsアプリケーションからコンソール画面への文字列出力

    Visual Studio 2005でのC#プログラミングについて教えてください。 Windowsアプリケーションからコンソール(コマンドプロンプト)に文字列を出力するにはどのようなコーディングを行えば良いのでしょうか? 通常、プロジェクトの新規作成の段階で「コンソール アプリケーション」を選択した場合はConsoleクラスのWriteメソッドやWriteLineメソッドを使用すればそのままコンソールの出力されると思います。 しかし、現在は「Windowsアプリケーション」を選択して開発を行っており、その状態からでは上記メソッドを使用しても視覚的には何も起きません。 コンソールに対して文字列を出力しようとしている理由は、現在ログをテキストボックスに表示させているのですが、そのログの量が非常に多く、扱う文字列のが多くなり処理が重くなってしまっているからです。 (textbox.Text = "新たに発生したログ" + textbox.Text; といった形で処理させています。) もし、コンソールに対する文字列出力が困難、または不可能であれば上記のような処理を実現するために適切な方法についてもご教示頂ければ幸いです。 どうぞよろしくお願い致します。

  • Java初心者です。例外のキャッチについて

    ■行いたこと log4jを使用してログ出力した際に、ファイルIOなどの例外が発生した場合を想定しその際に発生した例外(IOException)をキャッチして、ログ出力時にファイルIOに失敗したことを通知できるようにしたい。 ■問題 IOExceptionが発生しているようですが(下記メッセージ参照)なぜか自分のところ(プログラム)でキャッチできない。 クラスBBB メソッドbbb try { AAAクラス.メソッドaaa   ←AAAクラスのログ出力                メソッドを実行 }catch ( IOException e ) { ログ出力に失敗       ←なぜかIOExceptionを                キャッチしない。。。 } クラスAAA log = Loggerクラスのインスタンス purblic メソッドaaa throws IOException log.info("メッセージ") ←log4jのメソッドを実行 ************************************************** log4j:ERROR Failed to flush writer, java.io.IOException: 予期しないネットワークエラーが発生しました。  at java.io.FileOutputStream.writebytes(Native Method)  at java.io.FileOutputStream.write(Unknown Sorce)  at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(Unknown Sorce) 中略  at org.apache.log4j.Category.forcedLog(Category.java:372)  at org.apache.log4j.Category.info(Category.java:372)  at AAA.aaa()  at BBB.bbb() ■環境は以下のとおりです。  OS:WindowsXP  開発環境:Eclipse3.0  JAVA:J2SDK 1.4.2_06 ■疑問 なぜキャッチしてくれないか? どう対処してよいか分かりません。 どなたか教えてください。

専門家に質問してみよう