gpt4 book ai didi

android - 使用 Xamarin.Forms 和 Serilog 将日志写入文件

转载 作者:行者123 更新时间:2023-12-04 12:25:50 25 4
gpt4 key购买 nike

您好,我无法使用 Xamarin.Forms(.NET Core 共享项目)和 Serilog 将日志写入 Android 设备上的文件。

到目前为止,我已经在共享项目中安装了 Serilog。将 Serilog、Serilog.Sinks.File 和 Serilog.Sinks.Xamarin 安装到我的 Android 项目并在 MainActivity 中初始化记录器:

Log.Logger = new LoggerConfiguration()
.WriteTo.File(Path.Combine(Environment.ExternalStorageDirectory.AbsolutePath,"XamarinLib-{Date}.txt"),
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] [{SourceContext}] {Message}{NewLine}{Exception}",
fileSizeLimitBytes: 100000000,
rollingInterval: RollingInterval.Day,
rollOnFileSizeLimit: true,
shared: false,
retainedFileCountLimit: 31,
encoding: Encoding.UTF8)
.WriteTo.AndroidLog()
.CreateLogger();

之后我从共享项目中调用记录器,例如:
Log.Information("Test writing to log file");

我可以在 Visual Studio 调试输出中看到正在执行的日志命令,但根本没有创建该文件。
我已经在模拟器和实际设备上尝试了多个位置(没有 root 访问权限)。

我也尝试以类似的方式使用 RollingFile 接收器,但没有成功。

有任何想法吗?

最佳答案

首先,您必须在 AndroidManifest.xml 文件中允许权限。

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

接下来,用户必须在运行时批准,您必须在后面的代码中对此进行编码。 注意 请记住在您的 NUGET 包中添加 Plugin.Permissions :
       InitializeComponent();

Task.Run(async () =>
{
try
{
var status = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Storage);
if (status != PermissionStatus.Granted)
{
var accepted = await DisplayAlert("Storage Permission Required",
"Please enable your storage permission, it will be used to store logs and crashes",
"ACCEPT",
"CANCEL");
if(accepted)
{
var results = await CrossPermissions.Current.RequestPermissionsAsync(Permission.Storage);
status = results[Permission.Storage];
}
}
}
catch (Exception ex)
{
await DisplayAlert("Exception ex", "Exception ex", "OK");
}
});

或者

让他们更改 settings -> app -> permissions. 中的权限

最后,
更改链接到 storage/emulated/0/[your added directory] 的文件名.

关闭应用程序后,您可以在 Android 文件管理器中看到它。

关于android - 使用 Xamarin.Forms 和 Serilog 将日志写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52421501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com