In Xamarin.iOS
, there is a static CoreFoundation.OSLog
object called Default
that one can use straight away which will log messages with the specified OSLogLevel
argument such as OSLogLevel.Debug
, OSLogLevel.Error
etc.
You could have a method in your Xamarin.iOS
code that logs a message at the Debug
level:
using CoreFoundation;
// ...
public void Write(string message)
{
OSLog.Default.Log(OSLogLevel.Debug, message);
}
If you want to use the subsystem and category, you have to instantiate an instance of OSLog
using the appropriate constructor and use that instance to log your messages. Presumably you'd want to hold a static reference to your created instance and use it like you'd use OSLog.Default
.
public partial class AppDelegate : Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public static OSLog LoggerInstance;
public override bool FinishedLaunching(UIApplication app, NSDictionary launchOptions)
{
LoggerInstance = new OSLog(subsystem: "subsystem", category: "category");
//...
public class SomeClass
{
public void SomeMethod()
{
AppDelegate.LoggerInstance?.Log(OSLogLevel.Debug, "log message");
// ...
}
This will print a fairly nice message in the device log with a timestamp and showing the specified category.