using System.Linq;
namespace System.Logging
{
internal static class LogHelper
{
///
/// Android 的 Log Tag 名称最大长度
/// 如果超出此长度,会引发异常:
/// Java.Lang.IllegalArgumentException: Log tag "Microsoft.EntityFrameworkCore.Infrastructure" exceeds limit of 23 characters
///
public const int droid_tag_max_len = 23;
public const string Droid = "Droid";
public static string CutDroidTag(string name)
{
var array = name.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
var lastItem = array.LastOrDefault(x => !string.IsNullOrWhiteSpace(x));
if (lastItem != null)
{
if (lastItem.StartsWith(Droid, StringComparison.OrdinalIgnoreCase))
{
lastItem = lastItem[Droid.Length..];
}
if (lastItem.Length > droid_tag_max_len)
{
return lastItem.Substring(0, droid_tag_max_len);
}
else
{
return lastItem;
}
}
else
{
return "Unknown";
}
}
///
/// 根据 Name 获取 Android Log Tag
///
///
///
public static string GetDroidTag(string name)
{
if (name.Length > droid_tag_max_len)
{
return CutDroidTag(name);
}
return name;
}
}
}