Shellをファイルに出力するには、Shellのコンストラクターで出力ストリームを宣言します。これは、stdoutをCakePHPのTMP
ディレクトリ(通常はapp/tmp/
)にある次の名前のファイルのログファイルにする例shell.out
です。
<?php
class FooShell extends AppShell {
public function __construct($stdout = null, $stderr = null, $stdin = null) {
// This will cause all Shell outputs, eg. from $this->out(), to be written to
// TMP.'shell.out'
$stdout = new ConsoleOutput('file://'.TMP.'shell.out');
// You can do the same for stderr too if you wish
// $stderr = new ConsoleOutput('file://'.TMP.'shell.err');
parent::__construct($stdout, $stderr, $stdin);
}
public function main() {
// The following output will not be printed on your console
// but be written to TMP.'shell.out'
$this->out('Hello world');
}
}