我编写了一个Logger类来帮助我创建一个包含所有应用程序异常的日志文件,实际上我将这个日志保存在ApplicationData中,所以我创建了一个简单的类:
public class Logger
{
private static string _appDataPath =
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
private static string _logPath = _appDataPath + "\\MyApp\\Log";
public static void log(string lines)
{
if (!File.Exists(_logPath))
{
Directory.CreateDirectory(_logPath);
}
using (StreamWriter file = new StreamWriter(_logPath))
{
file.WriteLine(lines);
file.Close();
};
}
}
因此,当我致电:Roaming
时,您如何看到我正在使用用户AppData
内的Logger.log("some exception message");
文件夹:我接受了这一行:
using (StreamWriter file = new StreamWriter(_logPath))
这个例外:
System.UnauthorizedAccessException的
也许我需要为该文件夹设置一些权限?或者我无法正确访问此路径?感谢。
答案 0 :(得分:1)
您的代码会创建一个名为
的文件夹%APPDATA%\ MyApp的\登录
当然,作为一个文件夹而不是文件,StreamWriter无法写入文件夹
更改代码以将文件名添加到文件夹
main.cpp:21:3: warning: exception of type 'EB' will be caught
catch(EB&) // why not me? every time?
^~~~~
main.cpp:17:3: warning: by earlier handler for 'EA'
catch(EA&) // caught here??
^~~~~
答案 1 :(得分:1)
您的_logPath
变量指向您想要的目录,因此您应使用Directory.Exists
而不是File.Exists
检查其存在。
此外,您需要指定要创建的文件的路径,而不仅仅指定目录。因此,在我的示例代码中,我声明了变量_logFileName
,它指定了要创建的日志文件的名称。
这是您的课程需要的样子:
public class Logger
{
private static string _appDataPath =
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
private static string _logPath = _appDataPath + "\\MyApp\\Log";
private static string _logFileName = "logfile.txt";
public static void log(string lines)
{
if (!Directory.Exists(_logPath))
{
Directory.CreateDirectory(_logPath);
}
using (StreamWriter file = new StreamWriter(Path.Combine(_logPath, _logFileName)))
{
file.WriteLine(lines);
file.Close();
};
}
}