/// <summary> /// Sets the log handler for a domain and a set of log levels. /// </summary> /// <param name="logDomain">the log domain, or <see langword="null" /> for the default "" application domain</param> /// <param name="flags">the log levels to apply the log handler for</param> /// <param name="logFunc">the log handler function</param> /// <returns>the id of the handler</returns> public static uint SetLogHandler(string logDomain, Enums.LogLevelFlags flags, LogFunc logFunc) { if (_nativeHandler == null) { _nativeHandler = NativeCallback; } var gch = GCHandle.Alloc(logFunc); var result = GLib.GLogSetHandler(logDomain, flags, _nativeHandler, (IntPtr)gch); _handlers.AddOrUpdate(result, gch, (k, v) => gch); return(result); }
/// <summary> /// Installs a default log handler which is used if no log handler /// has been set for the particular log domain and log level combination. /// </summary> /// <param name="logFunc">the log handler function</param> /// <returns>the previous default log handler</returns> public static LogFunc SetDefaultHandler(LogFunc logFunc) { if (_nativeHandler == null) { _nativeHandler = NativeCallback; } var prev = GLib.GLogSetDefaultHandler(_nativeHandler, (IntPtr)GCHandle.Alloc(logFunc)); if (prev == null) { return(null); } var invoker = new Invoker(prev); return(invoker.Handler); }
public Invoker(GLib.LogFuncNative native) { this.native = native; }