Xamarin Log.v等效于打印到控制台/ logcat

fra*_*r87 3 android xamarin.android xamarin xamarin.forms

如何在Xamarin中使用Log.v()或等效文件?我正在Xamarin / Visual Studio中开发一个Android应用程序,我想输出一些日志,例如与Android中的Log.v()一样,然后可以通过adb shell logcat获得这些日志。当我尝试使用

   Log.v("test");
Run Code Online (Sandbox Code Playgroud)

Visual Studio指出:“日志”无法达到其保护级别。

Debug.WriteLine(“”); 仅写入VS日志,它不会出现在Logcat中。

有什么建议么?谢谢!

更新:添加了代码。

        using Xamarin.Forms;
        using System;
        using System.Diagnostics;
        using Android.Util.Log;

        namespace xf2
        {
            public partial class xf2Page : ContentPage
            {
                public xf2Page()
                {
                    InitializeComponent();
                    Log.Debug("SO", "Debug");
                    Log.Error("SO", "Error");
                    Log.Info("SO", "Info");
                    Log.Warn("SO", "Warn");
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

Sus*_*ver 5

LogAndroid.Util名称空间中且特定于平台。

using Android.Util;
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用Log输出到logcat:

Log.Verbose("SO", "Verbose");
Log.Debug("SO", "Debug");
Log.Error("SO", "Error");
Log.Info("SO", "Info");
Log.Warn("SO", "Warn");
Run Code Online (Sandbox Code Playgroud)

要从Log基于表单的PCL / NStd库进行调用,可以使用依赖项服务:

RE:https : //developer.xamarin.com/guides/xamarin-forms/application-fundamentals/dependency-service/

依赖服务接口:

public interface ILogInterface
{
    void Verbose(string TAG, string message);
    void Info(string TAG, string message);
    void Debug(string TAG, string message);
    void Error(string TAG, string message);
    void Warn(string TAG, string message);
}
Run Code Online (Sandbox Code Playgroud)

Android实施:

public class LogImplementation : ILogInterface
{
    public void Debug(string TAG, string message)
    {
        L.Debug(TAG, message);
    }

    public void Error(string TAG, string message)
    {
        L.Error(TAG, message);
    }

    public void Info(string TAG, string message)
    {
        L.Info(TAG, message);
    }

    public void Verbose(string TAG, string message)
    {
        L.Verbose(TAG, message);
    }

    public void Warn(string TAG, string message)
    {
        L.Warn(TAG, message);
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:应用程序集级依赖项发现属性:

[assembly: Xamarin.Forms.Dependency(typeof(ILogInterface))]
Run Code Online (Sandbox Code Playgroud)

表格用法:

var Log = DependencyService.Get<ILogInterface>();
Log.Debug("SO", "record someting in logcat");
Run Code Online (Sandbox Code Playgroud)