Console do Cake

cakephp-logoSe você usa o console do cake para seus aplicativos, você deve com certeza ter visto aquela mensagem simpática de boas vindas toda vez que você roda um script no shell.

 

Welcome to CakePHP vX.Y.Z Console
---------------------------------
App : xxxxxxxxx
Path: \var\www\bla\bla
---------------------------------

Se você está usando o shell para rodar algum cron (como no meu caso), esse header pode custar vários megas de um logfile no fim de um mês.

Vi vários tutoriais na web explicando como editar o arquivo /console/libs/shell.php, porém, como eu gosto de manter as coisas independentes, eu uso uma instalação do Cake com vários sites, eu não gosto de mexer no Core do Cake.

A solução é um simples overwrite de função.

No seu shell, você precisa criar a função startup()

1
2
3
4
5
6
7
8
<?php
class MeuShell extends Shell{
	/**
	 * Startup - overwrite da função do shell
	 */
	function startup(){}
}
?>

Se você quiser fazer um shell personalizado, você pode usar o mesmo método:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
class MeuShell extends Shell{
	/**
	 * Startup - overwrite da função do shell
	 * para personalizar o shell
	 */
	function startup(){
		$this->out();
		$this->out('Shell do Bugz');
		$this->out('-------------');
		$this->out();
	}
}
?>

Finalmente, num offtopic total, se você vai usar o shell para gerar logs, pode ser interessante você gerar uma função para fazer ou output de forma mais organizada.

Eu gerei uma função ‘o’ para esse fim:

1
2
3
4
5
6
7
8
9
10
<?php
class MeuShell extends Shell{
	/**
	 * O - personalizar o out para incluir mais dados
	 */
	function o($msg,$tipo='ERRO'){
		$this->out(date('Ymd H:j:s').' - '.$tipo. ' - '.$msg);
	}
}
?>

A seguinte função:

1
2
3
4
$this->o('Sua mensagem de erro','ERRO');
$this->o('Sua mensagem de Info','INFO');
$this->o('Sua mensagem de BUGZ','BUGZ');
?>

Ela gera uma saida assim:

20110302 12:32:04 - ERRO - Sua mensagem de erro
20110302 12:32:04 - INFO - Sua mensagem de Info
20110302 12:32:04 - BUGZ - Sua mensagem de BUGZ
Compartilhe:
  • Print
  • email
  • Add to favorites
  • Digg
  • StumbleUpon
  • Yahoo! Buzz
  • Google Bookmarks
  • FriendFeed
  • Slashdot
  • Tumblr
  • LinkedIn
  • del.icio.us
  • Google Buzz
  • Ping.fm
  • Facebook
  • Twitter

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Back to top

Page optimized by WP Minify WordPress Plugin