glibの中にデフォルトのログハンドラは、複数のログレベルを渡されることは可能ですか?

StackOverflow https://stackoverflow.com/questions/891365

  •  23-08-2019
  •  | 
  •  

質問

の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_MESSAGEG_LOG_LEVEL_WARNING、およびG_LOG_LEVEL_ERRORです。彼らはビットフラグなので、あなたは、単一のハンドラに複数のチャネルを結合するために、バイナリのOR演算子を使用することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top