Monolog Php

Monolog sends your logs to files, sockets, inboxes, databases and various web services. See the complete list of handlers below. Special handlers allow you to build advanced logging strategies. This library implements the PSR-3 interface that you can type-hint against in your own libraries to keep a maximum of interoperability.

PHP Composer のインストールと使い方

Presenter: Satheeskumar A, Mindfire Solutions  Monolog is a PHP library that support different levels of logging for PHP Applications and depends on PSR.  Inspired by Python Logbook library  Provides stack of handlers  More Powerful than conventional way of logging in applications 11. PHP is a powerful backend language used in more than 80% of the global web applications. The simplicity of PHP makes it one of the top programming languages, as it uses an easy to understand programming structure and developer-friendly web functionalities.

PHP ライブラリ(パッケージ)をプロジェクト単位に管理するツール Composer の使い方や Mac で Homebrew を使って Composer をインストールする方法の覚書です。

Composer 公式サイト:https://getcomposer.org/

Composer Github:https://github.com/composer/composer

Composer 日本語訳:https://kohkimakimoto.github.io/

更新日:2020年03月15日

作成日:2020年03月09日

Composer のインストール

Mac の場合 Homebrew を使って簡単に Composer をインストールすることができます。

関連項目: Homebrew のインストールと使い方

Composer のインストールはローカルにインストールする方法とグローバルにインストールする方法の2通りがあります。

グローバルにインストールすると、パスが通っているので php コマンド経由ではなく直接 composer コマンドにアクセスできます。

  • ローカル(Locally):プロジェクト配下(プロジェクトごと)にインストールする方法
  • グローバル(Globally):好きな場所(/usr/local/bin/ などパスが通っている場所)にインストールする方法(またはインストール後にパスを通す)

Homebrew を使ってインストールするとグローバル(Globally)にインストールされます。

brew search でキーワードに composer を指定してフォーミュラを検索します。

brew install を実行して composer をインストールします。

composer コマンドを実行して Composer がインストールされたことを確認します。以下のようにバージョンやヘルプが表示されます。

または単に -V オプションでバージョンのみを確認することもができます。

Homebrew を使ってインストールすると Composer は /usr/local/Cellar/ にインストールされます。

Composer の基本的な使い方

Composer を使用するには composer.json というファイルを作成し、composer install コマンドなどでライブラリをインストールします。

composer.json

Composer を使うには、プロジェクトのディレクトリを作成(または既存のディレクトリを使用)し、以下のような composer.json というファイルを作成しディレクトリに配置します。

composer.json はインストールするライブラリの情報を JSON フォーマットで記述するファイルです(The composer.json Schema)。

composer.json は手動で作成してもいいですし、composer init コマンドで作成することもできます。また、composer require コマンドを使えば composer.json の作成とライブラリのインストールもまとめて行うことができます。

composer.json には以下の情報を指定します。

  • require キーでインストールするライブラリのパッケージ名とバージョン情報(制約)を定義。
  • 必要に応じてその他のキーを定義。

ライブラリのパッケージ名やバージョンの情報は Packagist というサイトで確認することができます。

以下はプロジェクトにロギングを行うためのライブラリ Monolog を導入する例です。

Composer のドキュメント(基本的な使い方 Basic usage)からの引用です。

composer.json の例

複数のパッケージを指定することもできます。以下は PHPMailer と oauth2-google をまとめてインストールする場合の例です。

【パッケージ名】

パッケージ名は「ベンダー名/プロジェクト名」のようにベンダー名とプロジェクト名で構成されています。上記の「monolog/monolog」の例のようにベンダー名とプロジェクト名が同じ場合もあります。

【バージョン】

バージョンには、パッケージの特定のバージョンやその範囲(制約)を指定することができます。

バージョンの範囲を指定すれば、composer update コマンドでアップデートをすると、指定した範囲の(最新の)バージョンに更新することができます。

バージョンの表記は「メジャーバージョン . マイナーバージョン . パッチ」のようになっています。

以下はバージョン(制約)の指定方法の例(一部)です。

バージョン制約の指定例 Writing Version Constraints
タイプ意味
レンジ
  • >=1.0 (1.0 以上)
  • >=1.0 <2.0(1.0 以上 2.0 未満)
  • >=1.0 <1.1 >=1.2(1.0 以上 1.1 未満 または 1.2 以上)
比較演算子(>, >=, <, <=, !=)を使って有効なバージョンの範囲を指定できます。カンマ区切りは論理積(AND)、パイプ は論理和(OR)として扱われます。また、AND は OR より優先されます。
ハイフン
  • 1.0 - 2.0 は >=1.0.0 <2.1 と同等
  • 1.0.0 - 2.1.0 は >=1.0.0 <=2.1.0. と同等
ハイフンを使って範囲を指定することができます。右側に部分的なバージョンを指定した場合は、ワイルドカードとして扱われます。例えば、右側に 2.0 を指定すると 2.0.* と解釈されます。
ワイルドカードワイルドカード(*)を使って範囲を指定することができます。1.0.* は >=1.0 <1.1 と同等です。
チルダ
  • ~1.2 は >=1.2 <2.0.0 と同等
  • ~1.2.3 は >=1.2.3 <1.3.0 と同等
チルダ(~)を使うと、指定した最後の桁のみの更新を許可することができます。
キャレット
  • ^1.2.3 は >=1.2.3 <2.0.0 と同等(1.2.3 以上の最新のバージョン。但し 2.0.0 未満)
  • バージョンが 1未満の場合: ^0.3 は >=0.3.0 <0.4.0 と扱われます
キャレット(^)を使うと後方互換性を維持する範囲で更新されます。

Monolog Php 8

また、必要に応じて PHP のバージョンや extension を指定することもできます(Package links)。

ライブラリのインストール

composer.json を配置したプロジェクトのディレクトリで composer install コマンドを実行するとライブラリ(依存ファイル)をインストールすることができます。

インストールが完了すると、プロジェクトのディレクトリには composer.lock というファイルと vendor というディレクトリが追加されます。

Monolog Php

vendor ディレクトリの中には autoload.php というファイルとそれに関連する composer ディレクトリ及びインストールしたライブラリ(この例の場合は monolog)が保存されています。

Monolog logger php
composer.lock

インストールが完了すると、Composer はインストールしたライブラリとそのバージョンの情報を composer.lock ファイルに記述(保存)し、その情報をもとにプロジェクトを特定のバージョンにロックします。

初めてインストールする(composer install コマンドを実行する)場合など、プロジェクト内に composer.lock ファイルが存在しない場合は Composer は composer.json の情報をもとにその最新バージョンのライブラリをインストールします。

既に composer.lock ファイルが存在する場合は、composer.lock に記述されているバージョンをインストールします。

以下は composer.lock の例です。この例の場合、composer.json のパッケージバージョンには 1.0.* と記述しているのでバージョン 1.0.2 がインストールされているのがわかります(11行目)。

ライブラリの更新

composer.lock が存在する場合、composer install コマンドを実行してもプロジェクトは特定のバージョンにロックされるので、ライブラリを更新(アップデート)するには composer update コマンドを実行します。

composer update コマンドは composer.json で指定したバージョン(の範囲)をもとに更新を実行し、composer.lock ファイルも更新します。

composer update コマンドの実行は composer.lock を削除して、composer install コマンドを実行するのと同じことになります。

特定のライブラリのみを更新する場合は、composer update コマンドに対象のライブラリを指定します。

以下は composer.json のバージョンを 1.0.* から 1.2.* に変更してからアップデートを実施した例です。

Packagist

Packagist というサイトには Composer でインストールできるパッケージが登録されています。このサイトでライブラリを検索して、そのパッケージ名やバージョンなどの情報を確認することができます。

以下は PHPMailer というライブラリを検索している例です。

当該ページではパッケージ名やバージョンなどを確認することができます。

ライブラリを使う / Autoloading

Composer はライブラリをインストールする際に vendor/autoload.php というファイルを生成し、オートローディング(自動読み込み)機能を提供してくれます(Autoloading)。

このため autoload.php を読み込ませるだけでインストールしたライブラリが使えるようになります。

以下はインストールした Monolog を使用するファイル test.php の例です。

以下の例では2行目で require と __DIR__ を使って autoload.php を読み込んでいます。

以下は上記のファイル(test.php)を実行する例です。

上記を実行すると、問題がなければカレントディレクトリに app.log という以下のような内容のファイルが生成されます。

app.log の例

コマンドライン

Composer にはいろいろなコマンドライン(サブコマンド)やそのオプションが用意されています。

composer コマンド(引数なし)を実行すると、オプションやサブコマンドを確認することができます。

以下は全てのコマンドで利用できるグローバルオプションの例です。

Monolog Php Example

グローバルオプション(一部抜粋)
オプション意味
--help (-h)ヘルプ情報を表示
--quiet (-q)メッセージを表示しない
--no-interaction (-n)インタラクティブな質問を表示しない
--version (-V)アプリケーションのバージョンを表示

以下は init サブコマンドのヘルプを表示する例です。

以下はコマンドの例です。

Command-line interface / Commands の例
コマンド説明
composer installcomposer.json で指定されたバージョンのパッケージをインストールします。但し、composer.lock がある場合は、そこに指定してあるバージョンをインストールします。
composer update [パッケージ名]composer.json で指定されたバージョンをもとにパッケージを最新版に更新します。その際に composer.lock も更新します。パッケージ名を指定しないと、インストール済みのパッケージを全て更新します。
composer init対話的に composer.json を生成します。パッケージのインストールも続けて実行することもできます。
composer require新しいパッケージを composer.json に追加し、ライブラリをインストールします。

composer init

init サブコマンドを使うと対話的に入力して composer.json ファイルを作成することができます。また、対話的入力のオプションの選択でライブラリも続けてインストールすることもできます。

以下は my_project というディレクトリを作成して、composer init コマンドを使って対話的に composer.json を作成する例です。

対話的に入力していき、「Do you confirm generation?」で「yes」と入力して return を押すと composer.json が生成されます(54行目)

続く「Would you like to install dependencies now?」で「yes」と入力して return を押すとライブラリ(依存ファイル)がインストールされます。

※但し、この例の場合では Package name (11行目)で「monolog/monolog」と入力してしまうと「Root package 'monolog/monolog' cannot require itself in its composer.json」のようなエラーが表示され、インストールはされません。name と require は別の名前を指定する必要があるようです。

インストールするライブラリの名前とバージョン(require の値)がわかっていて、require 以外を設定する必要がない場合はもっと簡単に composer.json を作成することができます。

以下は --require オプションにライブラリ名とバージョンを指定して、-n オプション(対話的にしない)を指定して composer.json を作成する例です。

PhpPhp logging library

--require オプションは「foo/bar:1.0.0」、「foo/bar=1.0.0」、「 'foo/bar 1.0.0'」のいずれかの書式で指定できます。(multiple values allowed)

composer require

require サブコマンドは composer.json ファイルに新しいパッケージを追加し、ライブラリをインストールします。

composer.json ファイルが存在しない場合は新たに composer.json ファイルを作成します。

引数を指定しない場合は、パッケージを検索するかどうかを対話的に聞いてきます。

以下は空のディレクトリで require サブコマンドを引数無しで実行する例です。composer.json ファイルが生成され、ライブラリがインストールされます。

以下の例ではバージョンを指定していないので、最新のバージョンがインストールされます(13行目)。

対話的にインストールしたくない場合は、引数に(require の)値を指定します。

Monolog phpmailer

以下を実行すると composer.json ファイルが作成されライブラリがインストールされます。

以下は PHPMailer をバージョンを指定せずにインストールする例です。

関連ページ:PHPMailer の使い方