お次はLogger。特に通信周りはログが取れないとエラーが起きたときとかに困るので。はじめは、Log4jみたいな汎用的なログライブラリでも作ろうかと思いましたが、無駄に機能ばかりあってもしょうがないので、基本機能だけにすることにしました。
複数のスレッドが同時に同期を行えるようになったので、ログは1セッション1ファイルで作られることになります。ファイル名は、[Type]-YYYYMMDDhhmmss-[ThreadId].logということで。Typeはpop3とかsmtpとかです。日付はUTCで。
停止していたのは私のミスでした。上野さんお手数をおかけしました。
Loggerが扱えるのがテキストだけならば問題ないのですが、ソケットで通信しているデータをそのまま書き込まなくてはいけないので、ちょっと困ります。
とりあえず、メッセージはUTF-8で書いて、バイナリは直書きということで。日本語のメールを送受信したときのログがUTF-8とISO-2022-JPとが混じった状態になってしまいますが、基本的にメッセージは英語で書くということで。
整形機能はなかなか便利なのですが、今まで自分で整形する癖がなかったので整形せずにメールを送ってしまうことが何度も。。個別に整形できたほうが便利なときもたくさんありますが、自動整形もやはり必要そうですね。
整形機能は表示時にも使えないでしょうか。たとえば、74文字程度で折り返されているメールをPocket PCの40文字程度しか入らない画面で表示すると見づらいですが、なにやら上手く整形して40文字程度で折り返してくれるとか。もちろん引用行もそれなりに整形して。たとえば、
>> 二重に引用されている長い行があるとします。 > ここは一重の長い行です。 ここは普通の長い行です。ホントは長いんです。 ここも普通の長い行とします
これを、このように
>> 二十二引用されている >> 長い行があるとします。 > ここは一重の長い行で > す。 ここは普通の長い行です。 ホントは長いんです。 ここも普通の長い行とし ます。
完全にするのは無理でしょうが、編集時の折り返し機能が多少は役に立たないかなと思うのですが、どんなもんでしょう。