Enviar búsqueda
Cargar
PSR-3 Logger Interfaceの紹介
•
7 recomendaciones
•
10,541 vistas
Hiraku Nakano
Seguir
第67回PHP勉強会@東京で発表した資料です。
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 46
Descargar ahora
Descargar para leer sin conexión
Recomendados
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
trmr
Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model (MuZero)
Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model (MuZero)
harmonylab
さくらのクラウド基礎知識
さくらのクラウド基礎知識
さくらインターネット株式会社
AWS CDKに魅入られた PHPer がオススメする
AWS CDKに魅入られた PHPer がオススメする
Taichi Inaba
Solr の LTR プラグインの使い方 - 第3回 LTR 勉強会資料 -
Solr の LTR プラグインの使い方 - 第3回 LTR 勉強会資料 -
Issei Nishigata
Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)
Yoshiaki Shibutani
Linuxのsemaphoreとmutexを見る
Linuxのsemaphoreとmutexを見る
wata2ki
Recomendados
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
trmr
Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model (MuZero)
Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model (MuZero)
harmonylab
さくらのクラウド基礎知識
さくらのクラウド基礎知識
さくらインターネット株式会社
AWS CDKに魅入られた PHPer がオススメする
AWS CDKに魅入られた PHPer がオススメする
Taichi Inaba
Solr の LTR プラグインの使い方 - 第3回 LTR 勉強会資料 -
Solr の LTR プラグインの使い方 - 第3回 LTR 勉強会資料 -
Issei Nishigata
Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)
Yoshiaki Shibutani
Linuxのsemaphoreとmutexを見る
Linuxのsemaphoreとmutexを見る
wata2ki
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Yahoo!デベロッパーネットワーク
Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析
政雄 金森
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見る
shinjiigarashi
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
Hideki Takase
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれから
ksk_ha
SDCCオープンネットワークのご紹介【2021/01版】
SDCCオープンネットワークのご紹介【2021/01版】
ProjectDC-01
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
Deep Learning JP
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築
Yoshitaka HARA
コンピュータ先端ガイド2巻3章勉強会(SVM)
コンピュータ先端ガイド2巻3章勉強会(SVM)
Masaya Kaneko
tf,tf2完全理解
tf,tf2完全理解
Koji Terada
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
NVIDIA GPU Cloud の紹介
NVIDIA GPU Cloud の紹介
NVIDIA Japan
單元測試不是有寫就好
單元測試不是有寫就好
Yu-Song Syu
「今日から使い切る」ための GNU Parallelによる並列処理入門
「今日から使い切る」ための GNU Parallelによる並列処理入門
Koji Matsuda
性能測定道 事始め編
性能測定道 事始め編
Yuto Hayamizu
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
Shohei Okada
HTTP入門
HTTP入門
Sota Sugiura
ディープラーニングとROSで作る自動運転ロボット
ディープラーニングとROSで作る自動運転ロボット
Hiroaki Kaneda
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
Akihiro Ikezoe
新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHP
Yusuke Ando
Phpをいじり倒す10の方法
Phpをいじり倒す10の方法
Moriyoshi Koizumi
Más contenido relacionado
La actualidad más candente
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Yahoo!デベロッパーネットワーク
Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析
政雄 金森
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見る
shinjiigarashi
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
Hideki Takase
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれから
ksk_ha
SDCCオープンネットワークのご紹介【2021/01版】
SDCCオープンネットワークのご紹介【2021/01版】
ProjectDC-01
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
Deep Learning JP
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築
Yoshitaka HARA
コンピュータ先端ガイド2巻3章勉強会(SVM)
コンピュータ先端ガイド2巻3章勉強会(SVM)
Masaya Kaneko
tf,tf2完全理解
tf,tf2完全理解
Koji Terada
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
NVIDIA GPU Cloud の紹介
NVIDIA GPU Cloud の紹介
NVIDIA Japan
單元測試不是有寫就好
單元測試不是有寫就好
Yu-Song Syu
「今日から使い切る」ための GNU Parallelによる並列処理入門
「今日から使い切る」ための GNU Parallelによる並列処理入門
Koji Matsuda
性能測定道 事始め編
性能測定道 事始め編
Yuto Hayamizu
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
Shohei Okada
HTTP入門
HTTP入門
Sota Sugiura
ディープラーニングとROSで作る自動運転ロボット
ディープラーニングとROSで作る自動運転ロボット
Hiroaki Kaneda
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
Akihiro Ikezoe
La actualidad más candente
(20)
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見る
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれから
SDCCオープンネットワークのご紹介【2021/01版】
SDCCオープンネットワークのご紹介【2021/01版】
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築
コンピュータ先端ガイド2巻3章勉強会(SVM)
コンピュータ先端ガイド2巻3章勉強会(SVM)
tf,tf2完全理解
tf,tf2完全理解
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
NVIDIA GPU Cloud の紹介
NVIDIA GPU Cloud の紹介
單元測試不是有寫就好
單元測試不是有寫就好
「今日から使い切る」ための GNU Parallelによる並列処理入門
「今日から使い切る」ための GNU Parallelによる並列処理入門
性能測定道 事始め編
性能測定道 事始め編
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
HTTP入門
HTTP入門
ディープラーニングとROSで作る自動運転ロボット
ディープラーニングとROSで作る自動運転ロボット
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
Destacado
新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHP
Yusuke Ando
Phpをいじり倒す10の方法
Phpをいじり倒す10の方法
Moriyoshi Koizumi
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
suno88
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみた
Masaru Matsuo
このPHP拡張がすごい!2017
このPHP拡張がすごい!2017
sasezaki
GANMA!でDDDをやってみてから1年くらい経った
GANMA!でDDDをやってみてから1年くらい経った
Yasuyuki Sugitani
SSBs Erling Holmøy_Norge eldes: Langsiktig økonomisk bærekraft 28.01.14
SSBs Erling Holmøy_Norge eldes: Langsiktig økonomisk bærekraft 28.01.14
Statistisk sentralbyrå
Plan de clase
Plan de clase
catedraticoevermontes
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
Kentaro Matsumae
صداقت حضرت مسیح موعود علیہ السلام از احادیث
صداقت حضرت مسیح موعود علیہ السلام از احادیث
muzaffertahir9
Ne principles of islam
Ne principles of islam
Loveofpeople
Solliciteren: social media of toch die traditionele sollicitatiebrief? (Natio...
Solliciteren: social media of toch die traditionele sollicitatiebrief? (Natio...
Tanker Communicatie
Tutorial for the ReportLinker App
Tutorial for the ReportLinker App
ReportLinker.com
SHERRI GOODWIN Resume 1 (2)
SHERRI GOODWIN Resume 1 (2)
Sherri Goodwin
Povezovanje kemijske panoge in delo z mladimi, KOCKE, Ziga Lampe, Drzava za g...
Povezovanje kemijske panoge in delo z mladimi, KOCKE, Ziga Lampe, Drzava za g...
Aleš Vidmar
Međuinduktivitet i zračni transformatori (slike)
Međuinduktivitet i zračni transformatori (slike)
IrmaKajd
A world without islam-graham e. fuller
A world without islam-graham e. fuller
MD. Monzurul Karim Shanchay
Modified maximum tangential stress criterion for fracture behavior of zirconi...
Modified maximum tangential stress criterion for fracture behavior of zirconi...
dentalid
YoonSeo Link
YoonSeo Link
yoonseolink
Happy New Year
Happy New Year
Minh Anh Nguyen
Destacado
(20)
新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHP
Phpをいじり倒す10の方法
Phpをいじり倒す10の方法
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみた
このPHP拡張がすごい!2017
このPHP拡張がすごい!2017
GANMA!でDDDをやってみてから1年くらい経った
GANMA!でDDDをやってみてから1年くらい経った
SSBs Erling Holmøy_Norge eldes: Langsiktig økonomisk bærekraft 28.01.14
SSBs Erling Holmøy_Norge eldes: Langsiktig økonomisk bærekraft 28.01.14
Plan de clase
Plan de clase
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
صداقت حضرت مسیح موعود علیہ السلام از احادیث
صداقت حضرت مسیح موعود علیہ السلام از احادیث
Ne principles of islam
Ne principles of islam
Solliciteren: social media of toch die traditionele sollicitatiebrief? (Natio...
Solliciteren: social media of toch die traditionele sollicitatiebrief? (Natio...
Tutorial for the ReportLinker App
Tutorial for the ReportLinker App
SHERRI GOODWIN Resume 1 (2)
SHERRI GOODWIN Resume 1 (2)
Povezovanje kemijske panoge in delo z mladimi, KOCKE, Ziga Lampe, Drzava za g...
Povezovanje kemijske panoge in delo z mladimi, KOCKE, Ziga Lampe, Drzava za g...
Međuinduktivitet i zračni transformatori (slike)
Međuinduktivitet i zračni transformatori (slike)
A world without islam-graham e. fuller
A world without islam-graham e. fuller
Modified maximum tangential stress criterion for fracture behavior of zirconi...
Modified maximum tangential stress criterion for fracture behavior of zirconi...
YoonSeo Link
YoonSeo Link
Happy New Year
Happy New Year
Similar a PSR-3 Logger Interfaceの紹介
第67回PHP勉強会LT(その2)
第67回PHP勉強会LT(その2)
Hideyuki Shimooka
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
sasezaki
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
Yuta Sakurai
第67回PHP勉強会LT
第67回PHP勉強会LT
Hideyuki Shimooka
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
Hironobu Saitoh
PHP Source Code Search with PHP
PHP Source Code Search with PHP
Sotaro Karasawa
WordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPS
Ryo Shibayama
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
Yuta Kashino
composer-scriptsについて
composer-scriptsについて
Hiraku Nakano
Composerはじめました
Composerはじめました
Takashi Nojima
♡PHPが恋しい話♡
♡PHPが恋しい話♡
Shinichi Takahashi
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
Kenichi Mukai
PHPの今と未来を語る
PHPの今と未来を語る
Rui Hirokawa
FukuokaPHP 3
FukuokaPHP 3
ichikaway
Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクト
Moriyoshi Koizumi
#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身
Hisateru Tanaka
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
DQNEO
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
Shoken Fujisaki
グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入
Hisao Soyama
Similar a PSR-3 Logger Interfaceの紹介
(19)
第67回PHP勉強会LT(その2)
第67回PHP勉強会LT(その2)
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
第67回PHP勉強会LT
第67回PHP勉強会LT
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
PHP Source Code Search with PHP
PHP Source Code Search with PHP
WordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPS
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
composer-scriptsについて
composer-scriptsについて
Composerはじめました
Composerはじめました
♡PHPが恋しい話♡
♡PHPが恋しい話♡
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
PHPの今と未来を語る
PHPの今と未来を語る
FukuokaPHP 3
FukuokaPHP 3
Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクト
#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入
Más de Hiraku Nakano
composerの遅さをまじめに考える #phpstudy
composerの遅さをまじめに考える #phpstudy
Hiraku Nakano
Composer並列化プラグイン #phpblt
Composer並列化プラグイン #phpblt
Hiraku Nakano
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudy
Hiraku Nakano
JSON SchemaとPHP
JSON SchemaとPHP
Hiraku Nakano
こわくない同時実行制御
こわくない同時実行制御
Hiraku Nakano
pecl-AOPの紹介
pecl-AOPの紹介
Hiraku Nakano
URLで遊ぼう
URLで遊ぼう
Hiraku Nakano
Xml builderの紹介
Xml builderの紹介
Hiraku Nakano
Más de Hiraku Nakano
(8)
composerの遅さをまじめに考える #phpstudy
composerの遅さをまじめに考える #phpstudy
Composer並列化プラグイン #phpblt
Composer並列化プラグイン #phpblt
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudy
JSON SchemaとPHP
JSON SchemaとPHP
こわくない同時実行制御
こわくない同時実行制御
pecl-AOPの紹介
pecl-AOPの紹介
URLで遊ぼう
URLで遊ぼう
Xml builderの紹介
Xml builderの紹介
PSR-3 Logger Interfaceの紹介
1.
PSR-3 Logger Interface のご紹介 第67回PHP勉強会@東京 @Hiraku
2.
目次 • 最近のPHPフレームワーク界のトレンド – 何故PHP-FIGが生まれたか •
PSR-0,1,2について – おさらい • ログは大事 – 本題! • PSR-3によってもたらされる世界
3.
自己紹介 • Hiraku (中野
拓) • 某ポータルサイトのWeb プログラマ • ライブラリアン(サービス 作るのはあまり興味ない) • そろそろPHP歴5年ぐらい • PHP-FIGはROM専です https://twitter.com/Hiraku https://github.com/hirak http://blog.tojiru.net/
4.
このスライドの主張は多分に 個人の見解が混じっています おことわり
5.
• 最近のPHPフレームワーク界のトレンド – 何故PHP-FIGが生まれたか •
PSR-0,1,2について – おさらい • ログは大事 – 本題! • PSR-3によってもたらされる世界
6.
最近のPHP界のトレンド? • フルスタック指向 •
コンポーネント指向
7.
最近のPHP界のトレンド? • フレームワークの一部だけ使ったり • 組み合わせたり •
マイクロフレームワークの増加 • Composer/Packagistの盛り上がり
8.
キメラ錬成 • 色々組み合わせて「ぼくの考えた最強の 怪物フレームワーク」を作れる
9.
脱・フルスタック • フレームワークにない機能も外から 持ってこれる • やるかやらないかは別 •
基本的に選択肢が増えるのはいいこと
10.
だがちょっと待ってほしい フレームワークの組み合わせ なんて可能なのか?
11.
フレームワーク間にそびえ立つ壁 • 命名規則 • コーディング規約 •
ディレクトリ構造 • 例外の使い方 • インターフェースがバラバラ …etc
12.
そこでPHP-FIGですよ • フレームワークの相互運用性について議 論するグループ http://www.php-fig.org/
13.
大御所いっぱい参加
14.
余談 • FuelPHPやCodeIgniterが入ってません • 仲悪いのかな?
15.
話を戻すと • PHP-FIGで決まったことを元に、 フレームワーク同士の相互運用性を高め ていこう!という雰囲気 • 究極的には、ありとあらゆるフレーム ワークやライブラリが組み合わせて使え る世界を目指している
16.
PHP-FIGが決定したもの: PSR(Propersed Standards Recommendation)
17.
• 最近のPHPフレームワーク界のトレンド – 何故PHP-FIGが生まれたか •
PSR-0,1,2について – おさらい • ログは大事 – 本題! • PSR-3によってもたらされる世界
18.
PSR-0 Autoloading Standard
19.
PSR-0 • 要約: – クラス名は被らないようにしろ –
クラス名とファイルパスは合わせろ • 名前空間先頭はvendor prefix – Symfony¥Foo – Zend¥Foo – Acme¥Foo • Autoloaderが共通化できる
20.
PSR-1 Basic Coding Standard
21.
PSR-1 • 要約:変な作りにするな – PSR-0に従え –
ソースコードはUTF-8(without BOM)で書け – 副作用(Side Effect) はクラス定義と分割しろ • 読み込んだだけで勝手にechoすんじゃねえ • php.iniの設定を勝手に変えるな • スクリプトのロードも勝手にするな – 定数はSUPER_CASE、メソッドは camelCaseとか
22.
PSR-2 Coding Style Guide
23.
PSR-2 • ほぼコーディング規約っぽい何かです – 詳細は省略 •
PHP_CodeSnifferでチェックできます – http://pear.php.net/package/PHP_CodeSniffer/ • CS Fixerもあるよ – http://cs.sensiolabs.org/ • PSR-2準拠を謳うライブラリ増加中
24.
-ここまで前置き- 長くなりましたが
25.
• 最近のPHPフレームワーク界のトレンド – 何故PHP-FIGが生まれたか •
PSR-0,1,2について – おさらい • ログは大事 – 本題! • PSR-3によってもたらされる世界
26.
PSR-3
27.
PSR-3 Logger Interface •
2013-01-05にacceptedになった • 読んで字のごとくロガーのインター フェース規約 • https://github.com/php-fig/fig- standards/blob/master/accepted/PSR-3-logger-interface.md • 今までのPSR-0,1,2と雰囲気が違う – 「PSR-2に従え」って書いてない – コーディング規約っぽくない
28.
PSR-3の基本 • ロガーはPsr/Log/LoggerInterfaceを 実装したクラス。 • psr/logに一式揃っている –
https://packagist.org/packages/psr/log • インスタンス化して利用する • ログレベル定義はsyslog(RFC5424)に 準じる – emergency, alert, critical, error, warning, notice, info, debug
29.
PSR-3準拠のロガーイメージ <?php require 'vendor/autoload.php'; class JsonLogger
extends Psr¥Log¥AbstractLogger { function log($level, $message, array $context=array()) { error_log(json_encode( compact('level', 'message') + $context )); } } $log = new JsonLogger; //このインスタンスを色々な場所で使いまわす $log->emergency('oh my god!');
30.
…正直なところ • PSR-3自体はそんなに大したことは書い てない • 読んでも「ふーん」で終わる •
ここからはロガーがPSR化されたこと の意義を考察する
31.
デバッグについて ちょっと話をそらしますが
32.
質問 • デバッグってどうやってますか? • デバッガ使ってる? •
var_dump()?
33.
割とどうでもいい(個人の見解) • デバッガはデプロイ後には役に立たない – ユーザーが体験した「不具合」を再現できれ ば使えるけど… –
ユーザーのデータがレアケースだったり再現 性がない不具合だったり…
34.
ログの力 • デプロイ後の不具合究明に役立つのが アプリケーションログ – 不具合が起きたら問題をロギングする –
Web APIなどはきちんと叩けたこともロギン グしておくとよい • アリバイとして役に立つ • ログを見れば犯人がわかる状態が理想
35.
参考:表明(assertion) • assert()でtrueになるはずの条件をコード 中に列挙しておく – assert($param
instanceof DateTime)とか – 小さなユニットテストが常に実行される状態 を作る – もしassert()がfalseを受けたらエラーを吐く • デバッグログと似た概念 • PHPのassert()は関数なので、ロガーで代 替しても性能はあまり変わらない
36.
オレが思う重要度 1. アプリケーションログの設計 2. 例外とスタックトレース =====越えられない壁====== 3.
var_dump()デバッグ 4. デバッガの使い方
37.
要するに ログは重要
38.
• 最近のPHPフレームワーク界のトレンド – 何故PHP-FIGが生まれたか •
PSR-0,1,2について – おさらい • ログは大事 – 本題! • PSR-3によってもたらされる世界
39.
ログは重要なので • あちこちのフレームワーク内で再実装さ れている • 車輪の再発明されまくり monolog PEAR_Log Zend¥Log
40.
この状態でキメラ錬成すると • 「10個ライブラリを組み合わせたよ」 – 10個ともオレオレロガーを内包している •
「ログレベルをデバッグに切り替えて」 • 「ログの出力先をDBに切り替えて」 – 10か所設定を変えないと駄目 つらい!!
41.
どうする? • 1つのロガーだけを使うようにして、 自前実装を禁じよう – まちがい! •
ロガーのインターフェースを揃えて、 差し替え可能にしよう – せいかい!
42.
PSR-3にみんな準拠したら • ロガーは差し替えて統一できる! • 組み合わせこわくない CakePHP
Symfony Zend Framework PSR準拠 ロガー PSR準拠 ロガー PSR準拠 ロガー monolog
43.
PHP-FIGの目指すもの • 究極的には、ありとあらゆるフレーム ワークやライブラリが組み合わせて使え る世界を目指している(再掲) • PSRはただのコーディング規約じゃない、 その先を見ている
44.
まとめ • ログは大事 • PSRに定められるほど大事 •
ロガーがPSRになったことの意義は大きい • 今後のPSR-nは似たような取り決めが増 えるかもしれない – HTTPクライアントとか議論されてた
45.
補足:普及度 • PSR-3準拠のロガーはまだまだ少ない • monolog
ぐらい? http://github.com/Seldaek/monolog • Zend¥Logとかも対応してない
46.
PSR-3の理想のために • 例えばZend¥Logを使うにしても、一度 PSR-3のインターフェースにラッピング してから使うようにする – 面倒くさいけどな! –
PSR-3に従っておいた方が他のロガーとの交 換性が高くなるはず…
Descargar ahora