glibの中にデフォルトのログハンドラは、複数のログレベルを渡されることは可能ですか?
質問
のGLib GLogLevelFlags列挙は以下のように定義されます
typedef enum
{
/* log flags */
G_LOG_FLAG_RECURSION = 1 << 0,
G_LOG_FLAG_FATAL = 1 << 1,
/* GLib log levels */
G_LOG_LEVEL_ERROR = 1 << 2, /* always fatal */
G_LOG_LEVEL_CRITICAL = 1 << 3,
G_LOG_LEVEL_WARNING = 1 << 4,
G_LOG_LEVEL_MESSAGE = 1 << 5,
G_LOG_LEVEL_INFO = 1 << 6,
G_LOG_LEVEL_DEBUG = 1 << 7,
G_LOG_LEVEL_MASK = ~(G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL)
} GLogLevelFlags;
<のhref = "http://library.gnome.org/devel/glib/unstable/glib-Message-Logging.html#g-log-default-handler" のrel = "nofollowをnoreferrerことは可能ですそのログレベルとして|(G_LOG_LEVEL_DEBUG G_LOG_LEVEL_ERROR)「>デフォルトのハンドラは、例えば、受信するの?このglibののAPIのguarenteesに応じて明確に定義されていますか?
解決
はい - それがあります。
G_LOG_LEVEL_MASK
として見ると、すべてのビットをビット単位のマスクが、0および1組、と定義されている
g_log_set_handler ("GLib", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL
| G_LOG_FLAG_RECURSION, my_log_handler, NULL);
ログレベルを組み合わせること微細で、GLibのからのすべてのメッセージのログ・ハンドラを追加するための例として使用されます。
また、g_log_set_handler
については、以下の引用文を考えてみます:
ドメインのログハンドラとログレベルのセットを設定します。
最後に、このチュートリアルを、参照され、間他のもの、と述べます:
GLogLevelFlagsパラメータは、ログメッセージの文字と特定のチャネルを定義するビットフラグの列挙です。ロギングハンドラで最も可能性の高い使用します3は
G_LOG_LEVEL_MESSAGE
、G_LOG_LEVEL_WARNING
、およびG_LOG_LEVEL_ERROR
です。彼らはビットフラグなので、あなたは、単一のハンドラに複数のチャネルを結合するために、バイナリのOR演算子を使用することができます。