Как использовать iOS OSLog с Xamarin? - PullRequest
0 голосов
/ 20 сентября 2018

Как я могу использовать iOS OSLog в Xamarin.iOS?

Мне удалось использовать NSLog следующим образом, но я не вижу способа настроить подсистему (для идентификатора пакета)) с NSLog, чтобы я мог использовать это для фильтрации журналов в Console.app.

public class Logger
{
    #if DEBUG
    [DllImport(ObjCRuntime.Constants.FoundationLibrary)]
    private extern static void NSLog(IntPtr message);
    #endif

    public void WriteLine(string line)
    {
        #if DEBUG
        using (var nss = new NSString(line))
        {
            NSLog(nss.Handle);
        }
        #endif
    }
}

1 Ответ

0 голосов
/ 20 сентября 2018

OSLog - это структура ObjC (из двух константных символов), и для ее выделения предусмотрен метод ядра os_log_create.

Примечание: Подробнее см. os/log.h.

Определение:

[DllImport("__Internal", EntryPoint = "os_log_create")]
public static extern IntPtr os_log_create(string subsystem, string category);

Использование:

var oslog = os_log_create("some.bundle.id", "StackOverflowCategory");

К вашему сведению: ваш NSLog долженвключить строку формата printf в виде строки NSString

[DllImport (Constants.FoundationLibrary, EntryPoint = "NSLog")]
extern static void NSLog (IntPtr format, [MarshalAs (UnmanagedType.LPStr)] string s);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...