저는 CakePHP 2.4.4를 사용하여 내 앱의 대화 형 웹 파트를 작성했으며 매우 잘 진행되고 있습니다. CakePHP는 굉장합니다.콘솔 셸에서 로그 작성하기
현재 일부 백그라운드 프로세스를 지원하고 있습니다. 콘솔과 셸은 모델에 액세스 할 때 콘솔과 셸을 사용하는 방법 인 것 같습니다.
코드를 작성하고 작동 시키지만 모델에 사용하는 로그와 동일한 로그에 쓰려고합니다. 모델에서 모든 데이터베이스 변경 사항을 기록하는 afterSave 함수가 있으며 방금 로그에 쓸 때 $this->log("$model $logEntry", 'info');
을 사용했습니다.
쉘에서 작동하지 않지만 CakeLog::write('info', "$model $logEntry");
이 작동 할 수 있다고 생각했지만 문제가 될 수도 있습니다.
올바른 로그 파일을 가리 키도록 CakeLog를 초기화해야합니까?
<?php
App::uses('CakeTime', 'Utility');
App::uses('CakeLog', 'Utility');
class ProcessRequestShell extends AppShell {
//Need to access the request and monitor tables
public $uses = array('Request');
private function updateRequest($data){
$model = 'Request';
$result = $this->Request->save($data);
$logEntry = "UPDATE ProcessRequestShell ";
foreach ($data[$model] AS $k => $v){$logEntry .= "$k='$v' ";}
if ($result){
//$this->log("$model $logEntry", 'info');
CakeLog::write('info', "$model $logEntry");
} else {
//$this->log("$model FAILED $logEntry", 'error');
CakeLog::write('error', "$model FAILED $logEntry");
}
return($result);
}
public function main() {
$options = array('conditions' => array('state' => 0, 'next_state' => 1));
$this->Request->recursive = 0;
$requests = $this->Request->find('all', $options);
//See if the apply_changes_on date/time is past
foreach ($requests AS $request){
$this->out("Updating request ".$request['Request']['id'], 1, Shell::NORMAL);
//Update the next_state to "ready"
$request['Request']['state'] = 1;
$request['Request']['next_state'] = 2;
$this->updateRequest($request);
}
}
}
?>
나는 당신이 시도해야한다고 생각 요리 책 2.x에서의 Logging → Writing to logs 섹션 참조 :'CakeLog :: 쓰기 (' info ', $ model. $ logEntry);' – jimmymadon
위의 내 의견에 차이가 있어서는 안됩니다. 두 가지 방법 모두 나를 위해 일합니다. '$ this-> Request-> log ("$ model $ logEntry", 'info');'를 사용하면 같은 행동을합니까? – jimmymadon