2014年6月19日木曜日

SugarCRMのデバッグ (インバウンドメールが取り込まれない)

SugarCRMはphpで動いています。

一応ソフトウェア開発者なので、困った時にはプログラムを解析、
状況によりデバッグ。なんてこともしています。

今回は、SugarCRMのデバッグ。

インバウンドメールをセットアップしても綺麗にケースに入ってこないので
英語のマニュアルを読むよりは、解析、デバッグしてしまおう。という魂胆です。

【前提】

・インバウンドメールは、cron.phpで呼び出す。
・インバウンドメールの処理プログラムは、以下
 /var/www/myapp/sugarcrm/modules/Schedulers/_AddJobsHere.php

【やったこと】

1. ソースを調べる。


 まず、ソースをのぞいてみました。
 cron.phpを動かしたときにNOTICEが出ていた部分を見つけたのですが

 PHP Notice:  Undefined property: InboundEmail::$team_id in  /var/www/myapp/sugarcrm/modules/Schedulers/_AddJobsHere.php on line 104

 これの原因は後回し。おそらく、インバウンドメールに対応するチームを設定していないからと思います。
 ⇒画面で見ても項目見当たらないし、まだそこまでの運用に載ってない。

 で、ログを吐いている部分を確認。

 $GLOBALS['log']->debug('Trying to connect to mailserver for [ '.$a['name'].' ]');

 どこかにログを吐いていそうなことが分かったので、ログのファイルを検索

2.ログの内容を見てみる


 > locate *sugar*.log
 /var/www/myapp/sugarcrm/sugarcrm.log
 /var/www/myapp/sugarcrm/sugarcrm_05_2014.log
 /var/www/myapp/sugarcrm/sugarcrm_06_2014.log

 ということで、月別にログを吐いていそうなことがわかりました。

 ログの中を見ると、fatalだけが出力されています。内容からしてlog4j的なライブラリだろうと思い、ログの設定をしている所を探して、修正することにします。

3.ログ設定の修正

vim /var/www/myapp/sugarcrm/config.php

 前
     'level' => 'fatal',
 
 後
     'level' => 'debug',

 phpなので、何かの再起動は不要のようでした。

4.再度cron.phpを呼び出す


 ものすごい勢いでDEBUG のログが吐かれてました。
 中を見てみて、当りがついたので対処完了。
 config.phpを元に戻して終了です。

ログ関連の概略は掴めたので、この後の運用も楽になりそうです。


ちなみに、発生事象だった「インバウンドメールが入ってこない件」は、
IMAPサーバー側の「未読」「既読」が関係していました。

全てのメールを「未読」に戻したら、大量に入ってきました。

0 件のコメント: