C/C++

どうせならerrno書いてよ

今日も表題の通りなんですけど、ログ仕込むならerrnoまで書いてよって話です。

勿論、理想を言えばエラーが一切発生しないに越したことはないんですけど、まあ、現実問題としてそんなことはあり得ないじゃないですか?

で、そんな時に皆さんログを埋め込んでると思うんですけど、システムコールから返ってきたエラーをログに出すときに、”IO Error”とか、”Network Error”っていうログをよく見るわけですよ。
(ひどい時は大量の”Unknown Error”ですね…)

全くログを吐かずに突然死するプログラムに比べたら100万倍ましなんですけど、もう一歩進んでエラーの原因まで書いて欲しいなと解析する側に回った時に思うわけです。

いや、外向けに出すログとしては別にそれで良いんですよ?
実装を隠すという意味で。

でも、デバッグログ欲しいなー超欲しいなーー

はい、と言うことで、作るときはめんどくさいんですけど、システムコールのerrno出力する位だったらホントに10文字ちょい追加するだけなんで是非実践して欲しいです。


Cでerrnoを書く場合の例

// ↓インクルード必要
#include <errno.h>

// 実際のコード部分
if (なんかシステムコールでエラー) {
  printf(“errno=%d, %s\n”, errno, strerror(errno));
}

<ちょろっと解説>
システムコールでエラーが発生するとerrnoにエラーに対応する値が設定されます。
strerror(errno)でエラー番号に対応するエラーの文字列がエラー出力されます。便利!

システムコールのエラーログには是非errnoを使っていきましょう!

コメント

タイトルとURLをコピーしました