【问题标题】:Logging via TraceSource in Xamarin (UWP)通过 Xamarin (UWP) 中的 TraceSource 进行日志记录
【发布时间】:2019-08-10 03:46:33
【问题描述】:

我只想在将在 UWP、Mac OS X、iOS 和 Android 上运行的 Xamarin 应用程序中使用标准 TraceSource 登录到控制台和日志文件。我正在 UWP 上开发/调试。

TraceSource、TraceListener 和 TextWriterTraceListener 确实都在 .Net 标准库中可用,所以也许我设置不正确? Internet 上的大多数地方都坚持在 app.config 文件中设置跟踪侦听器,但这不适用于 Xamarin 应用程序,也不可能。所以这是我的日志初始化代码,主要基于 Microsoft 文档中的示例:

        private void SetupLogging()
        {
            Trace.Listeners.Add(new TextWriterTraceListener(Console.Out, "consoleTraceListener"));
            string logFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Application.log");
            if (!File.Exists(logFilePath)) File.Create(logFilePath);

            var logFileTraceListener = new TextWriterTraceListener(logFilePath, "logFileTraceListener");
            Trace.Listeners.Add(logFileTraceListener);

            Trace.Write("Test");
            Trace.TraceInformation("Logging Initialized. Log file location: " + logFilePath);
            Trace.Flush();
        }

当我在 Xamarin UWP 应用程序中运行它时,会创建一个文件,但没有写入任何内容,我也无法在程序的输出中找到任何内容(没有 ConsoleTraceListener 所以我正在尝试编写一个TextWriterTraceListenerConsole.Out)。有人可以为 Xamarin 提供一个工作示例吗? (我还没有尝试过 Android 或 iOS 应用程序;想先让本地机器上的 UWP 工作。)

【问题讨论】:

  • 以下答案有效吗?

标签: xamarin uwp tracelistener


【解决方案1】:

问题是您将错误的字符串参数传递给TextWriterTraceListener 方法。请尝试传递Stream 参数。您可以直接使用以下代码。顺便说一句,你最好使用可以在uwp中成功访问的LocalApplicationDataSpecialFolder。

private void SetupLogging()
{
    Trace.Listeners.Add(new TextWriterTraceListener(Console.Out, "consoleTraceListener"));
    string logFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Application.log");
    if (!File.Exists(logFilePath))
    {
        File.Create(logFilePath);
    }
    var logFileTraceListener = new TextWriterTraceListener(File.Open(logFilePath,FileMode.Open), "logFileTraceListener");
    Trace.Listeners.Add(logFileTraceListener);

    Trace.Write("Test");
    Trace.TraceInformation("Logging Initialized. Log file location: " + logFilePath);
    Trace.Flush();
}

【讨论】:

  • 在我的 android 应用程序中,我想收听第 3 方包发出的 TracseSource 事件,我在链接 stackoverflow.com/questions/60970153/… 中详细说明了我的问题,你能检查并帮助我如何编写 TraceSource 事件在日志文件中
  • 第三部分库的案例恐怕答不上来,更多社区会查看你的问题,请添加xamarin-anroid标签。
猜你喜欢
  • 2022-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 2012-03-10
  • 2023-04-04
相关资源
最近更新 更多