创建.txt文件-UWP Windows 10应用程序C#

时间:2018-08-03 23:41:47

标签: c# logging uwp windows-10 metrolog

在测试应用程序中,我想在应用程序目录的用户中输出.txt文件或.etl登录。

例如,我要测试的一件事是相机的曝光度。我希望将结果以.txt文件或log .etl文件的形式返回。

grep -r 'count($analyzed_sql_results' /opt/lampp/phpmyadmin

然后在使用此Windows 10 UWP应用程序的设备上,创建的文本文件或.etl日志应包含以下字符串之一:

var exposureControl = _mediaCapture.VideoDeviceController.ExposureControl; var outOfRangeValue = 0; // milliseconds if (exposureControl.Min.Millieseconds > outOfRangeValue) { textFile.add("Passed: Minimum Exposure" + exposureControl.Min.Millieseconds.ToString() + " is greater than " + outOfRangeValue.ToString()"); } else { textFile.add("Failed: Minimum Exposure " + exposureControl.Min.Millieseconds.ToString() + " should not be less than " + outOfRangeValue.ToString() + " bc app will crash"); }

Passed: Minimum Exposure 0.06 is greater than 0

因此,我基本上需要充当我的伪Failed: Minimum Exposure 0.06 should not be less than 0 cmd的东西。

什么是最好的方法?

我研究了MetroLog和Serilog等记录器。还有Microsoft的日志记录示例:https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/Logging。另一个Microsoft示例:https://code.msdn.microsoft.com/windowsapps/Logging-Sample-for-Windows-0b9dffd7#content。还有这个博客的示例:http://cryclops.com/2014/01/not-so-stupid-simple-logging-for-windows-store-apps-in-cvb/

我已经尝试实现MetroLog和上面引用的两个Microsoft示例,并且我无法确定正在创建文件的位置。无论如何,我什至不确定这些方法是否是达到我想要的结果的最佳方法。

2 个答案:

答案 0 :(得分:0)

MetroLog生成的文件是在应用程序的appdata folder(即C:\Users\<username>\AppData\Local\Packages\<package family name of your app>\LocalState)中创建的。

在Windows资源管理器中展开路径时,请注意AppData下的C:\Users\<username>文件夹是隐藏的,因此您需要在资源管理器中选中“显示隐藏的文件”。

答案 1 :(得分:0)

如果要在没有Logger的情况下执行此操作,则可以执行以下操作:

private async Task AddTextToFile(String textToSave)
{
    var appFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
    var file = await appFolder.CreateFileAsync("exposure.txt", 
        Windows.Storage.CreationCollisionOption.OpenIfExists);
    await Windows.Storage.FileIO.AppendTextAsync(file, textToSave + Environment.NewLine);
    // Look in Output Window of Visual Studio for path to file
    System.Diagnostics.Debug.WriteLine(String.Format("File is located at {0}", file.Path.ToString()));
}

private async void Button_Click(object sender, RoutedEventArgs e)
{
    await AddTextToFile(String.Format("MinimumExposure {0}", DateTime.Now.Millisecond.ToString()));
}

正如kennyzx所说,此文件位于隐藏目录中,因此我添加了Debug.WriteLine()命令,以便在以调试模式运行应用程序时可以在Visual Studio的“输出窗口”中查看文件的位置。如果使用此代码,则可能需要删除该行。