0 follower

クラス yii\log\FileTarget

継承yii\log\FileTarget » yii\log\Target » yii\base\Component » yii\base\BaseObject
実装yii\base\Configurable
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/log/FileTarget.php

FileTarget は、ログメッセージをファイルに記録します。

ログファイルは、$logFile で指定します。ログファイルのサイズが $maxFileSize (キロバイト単位) を超えると、ローテーションが実行され、現在のログファイルの名前の末尾に '.1' が付加されます。既存のログファイルはすべて 1 つずつ後ろに移動します。つまり、'.2' が '.3' に、'.1' が '.2' に、というように移動します。プロパティ $maxLogFiles は、保持する履歴ファイルの数を指定します。

2.0.46 以降、ファイルのローテーションはコピーによってのみ行われ、rotateByCopy プロパティは非推奨となりました。

パブリックプロパティ

継承されたプロパティを非表示

プロパティ タイプ 説明 定義元
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$categories array このターゲットが関心を持つメッセージカテゴリのリスト。 yii\log\Target
$dirMode integer 新しく作成されたディレクトリに設定されるパーミッション。 yii\log\FileTarget
$enableRotation boolean ログファイルが特定の最大サイズに達したときにローテーションを行うかどうか。 yii\log\FileTarget
$enabled boolean このログターゲットが有効かどうかを示します。 yii\log\Target
$except array このターゲットが関心を持たないメッセージカテゴリのリスト。 yii\log\Target
$exportInterval integer エクスポートされるまでに蓄積されるメッセージの数。 yii\log\Target
$fileMode integer|null 新しく作成されたログファイルに設定されるパーミッション。 yii\log\FileTarget
$levels integer このターゲットが関心を持つメッセージレベル。 yii\log\Target
$logFile string|null ログファイルのパスまたはパスエイリアス yii\log\FileTarget
$logVars array メッセージにログ記録されるPHPの事前定義された変数のリスト。 yii\log\Target
$maskVars array PHPの事前定義された変数のリスト。存在する場合、ログ記録する前に「そのまま」ログ記録するのではなく、常にマスク***に置き換える必要があります。 yii\log\Target
$maxFileSize integer ログファイルの最大サイズ(キロバイト単位)。 yii\log\FileTarget
$maxLogFiles integer ローテーションに使用されるログファイルの数。 yii\log\FileTarget
$messages array このログターゲットによってこれまでにロガーから取得されたメッセージ。 yii\log\Target
$microtime boolean マイクロ秒単位で時間をログ記録するかどうか。 yii\log\Target
$prefix callable|null エクスポートされたすべてのメッセージにプレフィックスを付ける文字列を返すPHPのcallable。 yii\log\Target
$rotateByCopy boolean ログファイルのローテーションをファイルの名前変更ではなく、コピーと切り捨てによって行うかどうか。 yii\log\FileTarget

パブリックメソッド

継承されたメソッドを非表示

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\Component
__clone() このメソッドは、オブジェクトが既存のオブジェクトを複製することによって作成された後に呼び出されます。 yii\base\Component
__construct() コンストラクタ。 yii\base\BaseObject
__get() コンポーネントプロパティの値を返します。 yii\base\Component
__isset() プロパティが設定されているか、つまり定義されていてnullではないかを確認します。 yii\base\Component
__set() コンポーネントプロパティの値を設定します。 yii\base\Component
__unset() コンポーネントプロパティをnullに設定します。 yii\base\Component
attachBehavior() ビヘイビアをこのコンポーネントにアタッチします。 yii\base\Component
attachBehaviors() ビヘイビアのリストをコンポーネントにアタッチします。 yii\base\Component
behaviors() このコンポーネントが動作するビヘイビアのリストを返します。 yii\base\Component
canGetProperty() プロパティを読み取ることができるかどうかを示す値を返します。 yii\base\Component
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\Component
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
collect() 指定されたログメッセージを処理します。 yii\log\Target
detachBehavior() ビヘイビアをコンポーネントからデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors()で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
export() ログメッセージをファイルに書き込みます。 yii\log\FileTarget
filterMessages() カテゴリとレベルに従って、指定されたメッセージをフィルタリングします。 yii\log\Target
formatMessage() ログメッセージを文字列として表示するようにフォーマットします。 yii\log\Target
getBehavior() 指定されたビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされたすべてのビヘイビアを返します。 yii\base\Component
getEnabled() ログターゲットが有効かどうかを確認します。 yii\log\Target
getLevels() yii\log\Target
getMessagePrefix() 指定されたメッセージにプレフィックスを付ける文字列を返します。 yii\log\Target
hasEventHandlers() 指定された名前のイベントにハンドラーがアタッチされているかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() ルートを初期化します。 yii\log\FileTarget
off() このコンポーネントから既存のイベントハンドラーを削除します。 yii\base\Component
on() イベントにイベントハンドラーをアタッチします。 yii\base\Component
setEnabled() このログターゲットが有効かどうかを示す値を設定します。 yii\log\Target
setLevels() このターゲットが対象とするメッセージレベルを設定します。 yii\log\Target
trigger() イベントをトリガーします。 yii\base\Component

保護されたメソッド

継承されたメソッドを非表示

メソッド 説明 定義元
getContextMessage() ログに記録するコンテキスト情報を生成します。 yii\log\Target
getTime() メッセージのフォーマットされた ('Y-m-d H:i:s') タイムスタンプを返します。 yii\log\Target
rotateFiles() ログファイルをローテーションします。 yii\log\FileTarget

プロパティの詳細

継承されたプロパティを非表示

$dirMode public プロパティ

新規作成されたディレクトリに設定されるアクセス許可。この値はPHPのchmod()関数によって使用されます。umaskは適用されません。デフォルトは0775で、ディレクトリは所有者とグループによって読み書き可能ですが、他のユーザーには読み取り専用であることを意味します。

public integer $dirMode 0775
$enableRotation public プロパティ (バージョン2.0.3以降で使用可能)

ログファイルが特定の最大サイズに達したときにローテーションするかどうか。ログローテーションはデフォルトで有効になっています。このプロパティを使用すると、サーバーでログローテーション用の外部ツールを構成している場合に無効にできます。

public boolean $enableRotation true
$fileMode public プロパティ

新しく作成されたログファイルに設定されるアクセス許可。この値はPHPのchmod()関数によって使用されます。umaskは適用されません。設定されていない場合、アクセス許可は現在の環境によって決定されます。

public integer|null $fileMode null
$logFile public プロパティ

ログファイルのパスまたはパスエイリアス。設定されていない場合は、「@runtime/logs/app.log」ファイルが使用されます。ログファイルを含むディレクトリは、存在しない場合は自動的に作成されます。

public string|null $logFile null
$maxFileSize public プロパティ

ログファイルの最大サイズ(キロバイト単位)。デフォルトは10240で、10MBを意味します。

public integer $maxFileSize 10240
$maxLogFiles public プロパティ

ローテーションに使用するログファイルの数。デフォルトは5です。

public integer $maxLogFiles 5
$rotateByCopy public プロパティ
2.0.46以降は非推奨となり、コピーによるローテーションが常に実行されるため、falseに設定しても効果はありません。

ファイルのローテーションを、ファイルの名前変更ではなくコピーと切り捨てによって行うかどうか。デフォルトは、ログテーラーや、開いているファイルのrenameとうまく連携しないWindowsシステムとの互換性を高めるためにtrueです。ただし、名前変更によるローテーションの方が少し高速です。

rename()関数が一部のプロセスで開かれているファイルで機能しないというWindowsシステムの問題については、PHPドキュメントのMartin Pelletier氏によるコメントで説明されています。rotateByCopyをtrueに設定することで、この問題を回避できます。

public boolean $rotateByCopy true

メソッドの詳細

継承されたメソッドを非表示

__call() public メソッド

定義元: yii\base\Component::__call()

クラスメソッドではない名前付きメソッドを呼び出します。

このメソッドは、アタッチされたビヘイビアに指定された名前のメソッドがあるかどうかを確認し、利用可能な場合は実行します。

不明なメソッドが呼び出されたときに暗黙的に呼び出されるPHPのマジックメソッドであるため、このメソッドを直接呼び出さないでください。

public mixed __call ( $name, $params )
$name string

メソッド名

$params array

メソッドのパラメーター

return mixed

メソッドの戻り値

throws yii\base\UnknownMethodException

不明なメソッドを呼び出す場合

                public function __call($name, $params)
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $object) {
        if ($object->hasMethod($name)) {
            return call_user_func_array([$object, $name], $params);
        }
    }
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__clone() public メソッド

定義元: yii\base\Component::__clone()

このメソッドは、オブジェクトが既存のオブジェクトを複製することによって作成された後に呼び出されます。

古いオブジェクトにアタッチされているため、すべてのビヘイビアを削除します。

public void __clone ( )

                public function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = null;
}

            
__construct() public メソッド

定義元: yii\base\BaseObject::__construct()

コンストラクタ。

デフォルトの実装では、次の2つのことを行います。

  • 指定された構成$configでオブジェクトを初期化します。
  • init()を呼び出します。

子クラスでこのメソッドがオーバーライドされている場合は、次のことが推奨されます。

  • コンストラクターの最後のパラメーターは、ここでの$configのように、構成配列であること。
  • コンストラクターの最後に親の実装を呼び出すこと。
public void __construct ( $config = [] )
$config array

オブジェクトのプロパティを初期化するために使用される名前と値のペア

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() public メソッド

定義元: yii\base\Component::__get()

コンポーネントプロパティの値を返します。

このメソッドは次の順序で確認し、それに応じて動作します。

  • ゲッターによって定義されたプロパティ: ゲッターの結果を返します。
  • ビヘイビアのプロパティ: ビヘイビアのプロパティ値を返します。

このメソッドは、$value = $component->property;を実行した際に暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。

__set()も参照してください。

public mixed __get ( $name )
$name string

プロパティ名

return mixed

プロパティの値またはビヘイビアのプロパティの値

throws yii\base\UnknownPropertyException

プロパティが定義されていない場合

throws yii\base\InvalidCallException

プロパティが書き込み専用の場合。

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        // read property, e.g. getName()
        return $this->$getter();
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name;
        }
    }
    if (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() public メソッド

定義元: yii\base\Component::__isset()

プロパティが設定されているか、つまり定義されていてnullではないかを確認します。

このメソッドは次の順序で確認し、それに応じて動作します。

  • セッターによって定義されたプロパティ: プロパティが設定されているかどうかを返します
  • ビヘイビアのプロパティ: プロパティが設定されているかどうかを返します
  • 存在しないプロパティにはfalseを返します

このメソッドは、isset($component->property)を実行した際に暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。

https://www.php.net/manual/en/function.isset.phpも参照してください。

public boolean __isset ( $name )
$name string

プロパティ名またはイベント名

return boolean

指定されたプロパティが設定されているかどうか

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name !== null;
        }
    }
    return false;
}

            
__set() public メソッド

定義元: yii\base\Component::__set()

コンポーネントプロパティの値を設定します。

このメソッドは次の順序で確認し、それに応じて動作します。

  • セッターによって定義されたプロパティ: プロパティ値を設定します
  • "on xyz"形式のイベント: イベント "xyz" にハンドラをアタッチします
  • "as xyz"形式のビヘイビア: "xyz" という名前のビヘイビアをアタッチします
  • ビヘイビアのプロパティ: ビヘイビアのプロパティ値を設定します

このメソッドは、$component->property = $value;を実行した際に暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。

__get()も参照してください。

public void __set ( $name, $value )
$name string

プロパティ名またはイベント名

$value mixed

プロパティ値

throws yii\base\UnknownPropertyException

プロパティが定義されていない場合

throws yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        // set property
        $this->$setter($value);
        return;
    } elseif (strncmp($name, 'on ', 3) === 0) {
        // on event: attach event handler
        $this->on(trim(substr($name, 3)), $value);
        return;
    } elseif (strncmp($name, 'as ', 3) === 0) {
        // as behavior: attach behavior
        $name = trim(substr($name, 3));
        $this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = $value;
            return;
        }
    }
    if (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}

            
__unset() public メソッド

定義元: yii\base\Component::__unset()

コンポーネントプロパティをnullに設定します。

このメソッドは次の順序で確認し、それに応じて動作します。

  • セッターによって定義されたプロパティ: プロパティ値をnullに設定します
  • ビヘイビアのプロパティ: プロパティ値をnullに設定します

このメソッドは、unset($component->property)を実行した際に暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。

https://www.php.net/manual/en/function.unset.phpも参照してください。

public void __unset ( $name )
$name string

プロパティ名

throws yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = null;
            return;
        }
    }
    throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}

            
attachBehavior() public メソッド

定義元: yii\base\Component::attachBehavior()

ビヘイビアをこのコンポーネントにアタッチします。

このメソッドは、指定された構成に基づいてビヘイビアオブジェクトを作成します。その後、yii\base\Behavior::attach()メソッドを呼び出すことによって、ビヘイビアオブジェクトがこのコンポーネントにアタッチされます。

detachBehavior()も参照してください。

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name string

ビヘイビアの名前。

$behavior string|array|yii\base\Behavior

ビヘイビアの構成。これは次のいずれかになります

  • yii\base\Behaviorオブジェクト
  • ビヘイビアクラスを指定する文字列
  • Yii::createObject()に渡されてビヘイビアオブジェクトを作成するオブジェクト構成配列。
return yii\base\Behavior

ビヘイビアオブジェクト

                public function attachBehavior($name, $behavior)
{
    $this->ensureBehaviors();
    return $this->attachBehaviorInternal($name, $behavior);
}

            
attachBehaviors() public メソッド

定義元: yii\base\Component::attachBehaviors()

ビヘイビアのリストをコンポーネントにアタッチします。

各ビヘイビアは名前でインデックスされ、yii\base\Behaviorオブジェクト、ビヘイビアクラスを指定する文字列、またはビヘイビアを作成するための構成配列である必要があります。

attachBehavior()も参照してください。

public void attachBehaviors ( $behaviors )
$behaviors array

コンポーネントにアタッチされるビヘイビアのリスト

                public function attachBehaviors($behaviors)
{
    $this->ensureBehaviors();
    foreach ($behaviors as $name => $behavior) {
        $this->attachBehaviorInternal($name, $behavior);
    }
}

            
behaviors() public メソッド

定義元: yii\base\Component::behaviors()

このコンポーネントが動作するビヘイビアのリストを返します。

子クラスは、動作させたいビヘイビアを指定するために、このメソッドをオーバーライドする場合があります。

このメソッドの戻り値は、ビヘイビア名でインデックスされたビヘイビアオブジェクトまたは構成の配列である必要があります。ビヘイビア構成は、ビヘイビアクラスを指定する文字列、または次の構造の配列のいずれかになります

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

ビヘイビアクラスはyii\base\Behaviorから拡張する必要があることに注意してください。ビヘイビアは名前付きまたは匿名でアタッチできます。名前が配列キーとして使用されている場合、この名前を使用して、後でgetBehavior()を使用してビヘイビアを取得したり、detachBehavior()を使用して切り離したりできます。匿名ビヘイビアは取得または切り離しできません。

このメソッドで宣言されたビヘイビアは、自動的に(要求に応じて)コンポーネントにアタッチされます。

public array behaviors ( )
return array

ビヘイビアの構成。

                public function behaviors()
{
    return [];
}

            
canGetProperty() public メソッド

定義元: yii\base\Component::canGetProperty()

プロパティを読み取ることができるかどうかを示す値を返します。

プロパティは、次の場合に読み取ることができます

  • クラスに、指定された名前に関連付けられたゲッターメソッドがある場合(この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前のメンバ変数がある場合($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアが、指定された名前の読み取り可能なプロパティを持っている場合($checkBehaviorsがtrueの場合)。

canSetProperty()も参照してください。

public boolean canGetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバ変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return boolean

プロパティが読み取れるかどうか

                public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canGetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
canSetProperty() public メソッド

定義元: yii\base\Component::canSetProperty()

プロパティを設定できるかどうかを示す値を返します。

プロパティが書き込み可能になる条件は以下のとおりです。

  • クラスが、指定された名前に関連付けられたセッターメソッドを持っている場合(この場合、プロパティ名はcase-insensitiveです)。
  • クラスに、指定された名前のメンバ変数がある場合($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアが、指定された名前の書き込み可能なプロパティを持っている場合($checkBehaviorsがtrueの場合)。

こちらも参照してください: canGetProperty()

public boolean canSetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバ変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return boolean

プロパティが書き込み可能かどうか

                public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canSetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
className() public static メソッド
2.0.14 から非推奨。PHP >= 5.5 では、代わりに ::class を使用してください。

定義元: yii\base\BaseObject::className()

このクラスの完全修飾名を返します。

public static string className ( )
return string

このクラスの完全修飾名。

                public static function className()
{
    return get_called_class();
}

            
collect() public メソッド

定義元: yii\log\Target::collect()

指定されたログメッセージを処理します。

このメソッドは、与えられたメッセージを$levels$categoriesでフィルタリングします。さらに、要求された場合は、フィルタリング結果を特定の媒体(例えば、メール)にエクスポートします。

public void collect ( $messages, $final )
$messages array

処理されるログメッセージ。各メッセージの構造については、yii\log\Logger::$messagesを参照してください。

$final boolean

このメソッドが現在のアプリケーションの最後に呼び出されるかどうか

                public function collect($messages, $final)
{
    $this->messages = array_merge($this->messages, static::filterMessages($messages, $this->getLevels(), $this->categories, $this->except));
    $count = count($this->messages);
    if ($count > 0 && ($final || $this->exportInterval > 0 && $count >= $this->exportInterval)) {
        if (($context = $this->getContextMessage()) !== '') {
            $this->messages[] = [$context, Logger::LEVEL_INFO, 'application', YII_BEGIN_TIME, [], 0];
        }
        // set exportInterval to 0 to avoid triggering export again while exporting
        $oldExportInterval = $this->exportInterval;
        $this->exportInterval = 0;
        $this->export();
        $this->exportInterval = $oldExportInterval;
        $this->messages = [];
    }
}

            
detachBehavior() public メソッド

定義元: yii\base\Component::detachBehavior()

ビヘイビアをコンポーネントからデタッチします。

ビヘイビアのyii\base\Behavior::detach()メソッドが呼び出されます。

public yii\base\Behavior|null detachBehavior ( $name )
$name string

ビヘイビアの名前。

return yii\base\Behavior|null

デタッチされたビヘイビア。ビヘイビアが存在しない場合は null。

                public function detachBehavior($name)
{
    $this->ensureBehaviors();
    if (isset($this->_behaviors[$name])) {
        $behavior = $this->_behaviors[$name];
        unset($this->_behaviors[$name]);
        $behavior->detach();
        return $behavior;
    }
    return null;
}

            
detachBehaviors() public メソッド

定義元: yii\base\Component::detachBehaviors()

コンポーネントからすべてのビヘイビアをデタッチします。

public void detachBehaviors ( )

                public function detachBehaviors()
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $name => $behavior) {
        $this->detachBehavior($name);
    }
}

            
ensureBehaviors() public メソッド

定義元: yii\base\Component::ensureBehaviors()

behaviors()で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。

public void ensureBehaviors ( )

                public function ensureBehaviors()
{
    if ($this->_behaviors === null) {
        $this->_behaviors = [];
        foreach ($this->behaviors() as $name => $behavior) {
            $this->attachBehaviorInternal($name, $behavior);
        }
    }
}

            
export() public メソッド

ログメッセージをファイルに書き込みます。

バージョン 2.0.14 から、ログをエクスポートできない場合、このメソッドは LogRuntimeException をスローします。

public void export ( )
throws yii\base\InvalidConfigException

ログファイルを開いて書き込みできない場合

throws yii\log\LogRuntimeException

ログをファイルに完全に書き込めない場合

                public function export()
{
    $text = implode("\n", array_map([$this, 'formatMessage'], $this->messages)) . "\n";
    if (trim($text) === '') {
        return; // No messages to export, so we exit the function early
    }
    if (strpos($this->logFile, '://') === false || strncmp($this->logFile, 'file://', 7) === 0) {
        $logPath = dirname($this->logFile);
        FileHelper::createDirectory($logPath, $this->dirMode, true);
    }
    if (($fp = @fopen($this->logFile, 'a')) === false) {
        throw new InvalidConfigException("Unable to append to log file: {$this->logFile}");
    }
    @flock($fp, LOCK_EX);
    if ($this->enableRotation) {
        // clear stat cache to ensure getting the real current file size and not a cached one
        // this may result in rotating twice when cached file size is used on subsequent calls
        clearstatcache();
    }
    if ($this->enableRotation && @filesize($this->logFile) > $this->maxFileSize * 1024) {
        $this->rotateFiles();
    }
    $writeResult = @fwrite($fp, $text);
    if ($writeResult === false) {
        $error = error_get_last();
        throw new LogRuntimeException("Unable to export log through file ({$this->logFile})!: {$error['message']}");
    }
    $textSize = strlen($text);
    if ($writeResult < $textSize) {
        throw new LogRuntimeException("Unable to export whole log through file ({$this->logFile})! Wrote $writeResult out of $textSize bytes.");
    }
    @fflush($fp);
    @flock($fp, LOCK_UN);
    @fclose($fp);
    if ($this->fileMode !== null) {
        @chmod($this->logFile, $this->fileMode);
    }
}

            
filterMessages() public static メソッド

定義元: yii\log\Target::filterMessages()

カテゴリとレベルに従って、指定されたメッセージをフィルタリングします。

public static array filterMessages ( $messages, $levels 0, $categories = [], $except = [] )
$messages array

フィルタリングされるメッセージ。yii\log\Logger::$messagesにおけるメッセージ構造に従います。

$levels integer

フィルタリングするメッセージレベル。これはレベル値のビットマップです。値0はすべてのレベルを許可することを意味します。

$categories array

フィルタリングするメッセージカテゴリ。空の場合、すべてのカテゴリが許可されることを意味します。

$except array

除外するメッセージカテゴリ。空の場合、すべてのカテゴリが許可されることを意味します。

return array

フィルタリングされたメッセージ。

                public static function filterMessages($messages, $levels = 0, $categories = [], $except = [])
{
    foreach ($messages as $i => $message) {
        if ($levels && !($levels & $message[1])) {
            unset($messages[$i]);
            continue;
        }
        $matched = empty($categories);
        foreach ($categories as $category) {
            if ($message[2] === $category || !empty($category) && substr_compare($category, '*', -1, 1) === 0 && strpos($message[2], rtrim($category, '*')) === 0) {
                $matched = true;
                break;
            }
        }
        if ($matched) {
            foreach ($except as $category) {
                $prefix = rtrim($category, '*');
                if (($message[2] === $category || $prefix !== $category) && strpos($message[2], $prefix) === 0) {
                    $matched = false;
                    break;
                }
            }
        }
        if (!$matched) {
            unset($messages[$i]);
        }
    }
    return $messages;
}

            
formatMessage() public メソッド

定義元: yii\log\Target::formatMessage()

ログメッセージを文字列として表示するようにフォーマットします。

public string formatMessage ( $message )
$message array

フォーマットされるログメッセージ。yii\log\Logger::$messagesにおけるメッセージ構造に従います。

return string

フォーマットされたメッセージ

                public function formatMessage($message)
{
    list($text, $level, $category, $timestamp) = $message;
    $level = Logger::getLevelName($level);
    if (!is_string($text)) {
        // exceptions may not be serializable if in the call stack somewhere is a Closure
        if ($text instanceof \Exception || $text instanceof \Throwable) {
            $text = (string) $text;
        } else {
            $text = VarDumper::export($text);
        }
    }
    $traces = [];
    if (isset($message[4])) {
        foreach ($message[4] as $trace) {
            $traces[] = "in {$trace['file']}:{$trace['line']}";
        }
    }
    $prefix = $this->getMessagePrefix($message);
    return $this->getTime($timestamp) . " {$prefix}[$level][$category] $text"
        . (empty($traces) ? '' : "\n    " . implode("\n    ", $traces));
}

            
getBehavior() public メソッド

定義元: yii\base\Component::getBehavior()

指定されたビヘイビアオブジェクトを返します。

public yii\base\Behavior|null getBehavior ( $name )
$name string

ビヘイビア名

return yii\base\Behavior|null

ビヘイビアオブジェクト。ビヘイビアが存在しない場合は null

                public function getBehavior($name)
{
    $this->ensureBehaviors();
    return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}

            
getBehaviors() public メソッド

定義元: yii\base\Component::getBehaviors()

このコンポーネントにアタッチされたすべてのビヘイビアを返します。

public yii\base\Behavior[] getBehaviors ( )
return yii\base\Behavior[]

このコンポーネントにアタッチされたビヘイビアのリスト

                public function getBehaviors()
{
    $this->ensureBehaviors();
    return $this->_behaviors;
}

            
getContextMessage() protected メソッド

定義元: yii\log\Target::getContextMessage()

ログに記録するコンテキスト情報を生成します。

デフォルトの実装では、ユーザー情報、システム変数などをダンプします。

protected string getContextMessage ( )
return string

コンテキスト情報。空文字列の場合、コンテキスト情報がないことを意味します。

                protected function getContextMessage()
{
    $context = ArrayHelper::filter($GLOBALS, $this->logVars);
    foreach ($this->maskVars as $var) {
        if (ArrayHelper::getValue($context, $var) !== null) {
            ArrayHelper::setValue($context, $var, '***');
        }
    }
    $result = [];
    foreach ($context as $key => $value) {
        $result[] = "\${$key} = " . VarDumper::dumpAsString($value);
    }
    return implode("\n\n", $result);
}

            
getEnabled() public メソッド

定義元: yii\log\Target::getEnabled()

ログターゲットが有効かどうかを確認します。

public boolean getEnabled ( )
return boolean

このログターゲットが有効かどうかを示す値。

                public function getEnabled()
{
    if (is_callable($this->_enabled)) {
        return call_user_func($this->_enabled, $this);
    }
    return $this->_enabled;
}

            
getLevels() public メソッド
public integer getLevels ( )
return integer

このターゲットが関心を持つメッセージレベル。これはレベル値のビットマップです。デフォルトは0で、利用可能なすべてのレベルを意味します。

                public function getLevels()
{
    return $this->_levels;
}

            
getMessagePrefix() public メソッド

定義元: yii\log\Target::getMessagePrefix()

指定されたメッセージにプレフィックスを付ける文字列を返します。

$prefix が設定されている場合、コールバックの結果を返します。デフォルトの実装では、ユーザーIP、ユーザーID、およびセッションIDをプレフィックスとして返します。

public string getMessagePrefix ( $message )
$message array

エクスポートされるメッセージ。メッセージ構造は yii\log\Logger::$messages の構造に従います。

return string

プレフィックス文字列

                public function getMessagePrefix($message)
{
    if ($this->prefix !== null) {
        return call_user_func($this->prefix, $message);
    }
    if (Yii::$app === null) {
        return '';
    }
    $request = Yii::$app->getRequest();
    $ip = $request instanceof Request ? $request->getUserIP() : '-';
    /* @var $user \yii\web\User */
    $user = Yii::$app->has('user', true) ? Yii::$app->get('user') : null;
    if ($user && ($identity = $user->getIdentity(false))) {
        $userID = $identity->getId();
    } else {
        $userID = '-';
    }
    /* @var $session \yii\web\Session */
    $session = Yii::$app->has('session', true) ? Yii::$app->get('session') : null;
    $sessionID = $session && $session->getIsActive() ? $session->getId() : '-';
    return "[$ip][$userID][$sessionID]";
}

            
getTime() protected メソッド (バージョン 2.0.13 から利用可能)

定義元: yii\log\Target::getTime()

メッセージのフォーマットされた ('Y-m-d H:i:s') タイムスタンプを返します。

$microtime が true に設定されている場合、'Y-m-d H:i:s.u' 形式を返します。

protected string getTime ( $timestamp )
$timestamp float

                protected function getTime($timestamp)
{
    $parts = explode('.', sprintf('%F', $timestamp));
    return date('Y-m-d H:i:s', $parts[0]) . ($this->microtime ? ('.' . $parts[1]) : '');
}

            
hasEventHandlers() public メソッド

定義元: yii\base\Component::hasEventHandlers()

指定された名前のイベントにハンドラーがアタッチされているかどうかを示す値を返します。

public boolean hasEventHandlers ( $name )
$name string

イベント名

return boolean

イベントにアタッチされたハンドラーがあるかどうか。

                public function hasEventHandlers($name)
{
    $this->ensureBehaviors();
    if (!empty($this->_events[$name])) {
        return true;
    }
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
            return true;
        }
    }
    return Event::hasHandlers($this, $name);
}

            
hasMethod() public メソッド

定義元: yii\base\Component::hasMethod()

メソッドが定義されているかどうかを示す値を返します。

メソッドが定義されているのは、次のいずれかの場合です。

  • クラスに指定された名前のメソッドがある場合
  • アタッチされたビヘイビアに、指定された名前のメソッドがある場合 ($checkBehaviors が true の場合)。
public boolean hasMethod ( $name, $checkBehaviors true )
$name string

プロパティ名

$checkBehaviors boolean

ビヘイビアのメソッドをこのコンポーネントのメソッドとして扱うかどうか

return boolean

メソッドが定義されているかどうか

                public function hasMethod($name, $checkBehaviors = true)
{
    if (method_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->hasMethod($name)) {
                return true;
            }
        }
    }
    return false;
}

            
hasProperty() public メソッド

定義元: yii\base\Component::hasProperty()

このコンポーネントにプロパティが定義されているかどうかを示す値を返します。

プロパティが定義されているのは、次のいずれかの場合です。

  • クラスに指定された名前に関連付けられたゲッターまたはセッターメソッドがある場合 (この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前のメンバ変数がある場合($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアに、指定された名前のプロパティがある場合 ($checkBehaviors が true の場合)。

参照

public boolean hasProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバ変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return boolean

プロパティが定義されているかどうか

                public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
{
    return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
}

            
init() public メソッド

ルートを初期化します。

このメソッドは、ルートマネージャーによってルートが作成された後に呼び出されます。

public void init ( )

                public function init()
{
    parent::init();
    if ($this->logFile === null) {
        $this->logFile = Yii::$app->getRuntimePath() . '/logs/app.log';
    } else {
        $this->logFile = Yii::getAlias($this->logFile);
    }
    if ($this->maxLogFiles < 1) {
        $this->maxLogFiles = 1;
    }
    if ($this->maxFileSize < 1) {
        $this->maxFileSize = 1;
    }
}

            
off() public メソッド

定義元: yii\base\Component::off()

このコンポーネントから既存のイベントハンドラーを削除します。

このメソッドは、on() の反対です。

注: イベント名にワイルドカードパターンが渡された場合、このワイルドカードで登録されたハンドラーのみが削除され、このワイルドカードに一致するプレーンな名前で登録されたハンドラーは残ります。

参照 on()

public boolean off ( $name, $handler null )
$name string

イベント名

$handler callable|null

削除するイベントハンドラー。null の場合、名前付きイベントにアタッチされたすべてのハンドラーが削除されます。

return boolean

ハンドラーが見つかり、デタッチされた場合

                public function off($name, $handler = null)
{
    $this->ensureBehaviors();
    if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
        return false;
    }
    if ($handler === null) {
        unset($this->_events[$name], $this->_eventWildcards[$name]);
        return true;
    }
    $removed = false;
    // plain event names
    if (isset($this->_events[$name])) {
        foreach ($this->_events[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_events[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_events[$name] = array_values($this->_events[$name]);
            return true;
        }
    }
    // wildcard event names
    if (isset($this->_eventWildcards[$name])) {
        foreach ($this->_eventWildcards[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_eventWildcards[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
            // remove empty wildcards to save future redundant regex checks:
            if (empty($this->_eventWildcards[$name])) {
                unset($this->_eventWildcards[$name]);
            }
        }
    }
    return $removed;
}

            
on() public メソッド

定義元: yii\base\Component::on()

イベントにイベントハンドラーをアタッチします。

イベントハンドラーは、有効な PHP コールバックである必要があります。以下にいくつかの例を示します。

function ($event) { ... }         // anonymous function
[$object, 'handleClick']          // $object->handleClick()
['Page', 'handleClick']           // Page::handleClick()
'handleClick'                     // global function handleClick()

イベントハンドラーは、次のシグネチャで定義する必要があります。

function ($event)

ここで、$event は、イベントに関連付けられたパラメーターを含む yii\base\Event オブジェクトです。

2.0.14 以降、イベント名をワイルドカードパターンとして指定できます

$component->on('event.group.*', function ($event) {
    Yii::trace($event->name . ' is triggered.');
});

参照 off()

public void on ( $name, $handler, $data null, $append true )
$name string

イベント名

$handler callable

イベントハンドラー

$data mixed

イベントがトリガーされたときにイベントハンドラーに渡されるデータ。イベントハンドラーが呼び出されると、このデータは yii\base\Event::$data を介してアクセスできます。

$append boolean

新しいイベントハンドラーを既存のハンドラーリストの最後に追加するかどうか。false の場合、新しいハンドラーは既存のハンドラーリストの先頭に挿入されます。

                public function on($name, $handler, $data = null, $append = true)
{
    $this->ensureBehaviors();
    if (strpos($name, '*') !== false) {
        if ($append || empty($this->_eventWildcards[$name])) {
            $this->_eventWildcards[$name][] = [$handler, $data];
        } else {
            array_unshift($this->_eventWildcards[$name], [$handler, $data]);
        }
        return;
    }
    if ($append || empty($this->_events[$name])) {
        $this->_events[$name][] = [$handler, $data];
    } else {
        array_unshift($this->_events[$name], [$handler, $data]);
    }
}

            
rotateFiles() protected メソッド

ログファイルをローテーションします。

protected void rotateFiles ( )

                protected function rotateFiles()
{
    $file = $this->logFile;
    for ($i = $this->maxLogFiles; $i >= 0; --$i) {
        // $i == 0 is the original log file
        $rotateFile = $file . ($i === 0 ? '' : '.' . $i);
        if (is_file($rotateFile)) {
            // suppress errors because it's possible multiple processes enter into this section
            if ($i === $this->maxLogFiles) {
                @unlink($rotateFile);
                continue;
            }
            $newFile = $this->logFile . '.' . ($i + 1);
            $this->rotateByCopy($rotateFile, $newFile);
            if ($i === 0) {
                $this->clearLogFile($rotateFile);
            }
        }
    }
}

            
setEnabled() public メソッド

定義元: yii\log\Target::setEnabled()

このログターゲットが有効かどうかを示す値を設定します。

public void setEnabled ( $value )
$value boolean|callable

真偽値、または値を取得するための callable です。callable 値はバージョン 2.0.13 から利用可能です。

callable は、ログターゲットを動的に有効にするかどうかを決定するために使用できます。例えば、現在のユーザーがログインしている場合にのみログを有効にするには、次のようにターゲットを構成できます。

'enabled' => function() {
    return !Yii::$app->user->isGuest;
}

                public function setEnabled($value)
{
    $this->_enabled = $value;
}

            
setLevels() public メソッド

定義元: yii\log\Target::setLevels()

このターゲットが対象とするメッセージレベルを設定します。

パラメータは、対象となるレベル名の配列、または対象となるレベル値のビットマップを表す整数のいずれかになります。有効なレベル名には、'error', 'warning', 'info', 'trace', および 'profile' が含まれます。有効なレベル値には、yii\log\Logger::LEVEL_ERROR, yii\log\Logger::LEVEL_WARNING, yii\log\Logger::LEVEL_INFO, yii\log\Logger::LEVEL_TRACE, および yii\log\Logger::LEVEL_PROFILE が含まれます。

例えば、

['error', 'warning']
// which is equivalent to:
Logger::LEVEL_ERROR | Logger::LEVEL_WARNING
public void setLevels ( $levels )
$levels array|integer

このターゲットが対象とするメッセージレベル。

throws yii\base\InvalidConfigException

$levels の値が正しくない場合。

                public function setLevels($levels)
{
    static $levelMap = [
        'error' => Logger::LEVEL_ERROR,
        'warning' => Logger::LEVEL_WARNING,
        'info' => Logger::LEVEL_INFO,
        'trace' => Logger::LEVEL_TRACE,
        'profile' => Logger::LEVEL_PROFILE,
    ];
    if (is_array($levels)) {
        $this->_levels = 0;
        foreach ($levels as $level) {
            if (isset($levelMap[$level])) {
                $this->_levels |= $levelMap[$level];
            } else {
                throw new InvalidConfigException("Unrecognized level: $level");
            }
        }
    } else {
        $bitmapValues = array_reduce($levelMap, function ($carry, $item) {
            return $carry | $item;
        });
        if (!($bitmapValues & $levels) && $levels !== 0) {
            throw new InvalidConfigException("Incorrect $levels value");
        }
        $this->_levels = $levels;
    }
}

            
trigger() public メソッド

定義元: yii\base\Component::trigger()

イベントをトリガーします。

このメソッドは、イベントの発生を表します。クラスレベルのハンドラを含む、イベントにアタッチされたすべてのハンドラを呼び出します。

public void trigger ( $name, yii\base\Event $event null )
$name string

イベント名

$event yii\base\Event|null

イベントインスタンス。設定されていない場合は、デフォルトの yii\base\Event オブジェクトが作成されます。

                public function trigger($name, Event $event = null)
{
    $this->ensureBehaviors();
    $eventHandlers = [];
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (StringHelper::matchWildcard($wildcard, $name)) {
            $eventHandlers[] = $handlers;
        }
    }
    if (!empty($this->_events[$name])) {
        $eventHandlers[] = $this->_events[$name];
    }
    if (!empty($eventHandlers)) {
        $eventHandlers = call_user_func_array('array_merge', $eventHandlers);
        if ($event === null) {
            $event = new Event();
        }
        if ($event->sender === null) {
            $event->sender = $this;
        }
        $event->handled = false;
        $event->name = $name;
        foreach ($eventHandlers as $handler) {
            $event->data = $handler[1];
            call_user_func($handler[0], $event);
            // stop further handling if the event is handled
            if ($event->handled) {
                return;
            }
        }
    }
    // invoke class-level attached handlers
    Event::trigger($this, $name, $event);
}