我有一个带有参数的小型控制台应用程序。我使用一种方法将一些信息作为日志抛出到文件中。很简单:
static void Log(string str)
{
using (StreamWriter sw = new StreamWriter("log.txt", true))
{
sw.WriteLine(str);
}
}
但是,当通过命令行调用运行该程序时,该程序将运行,但是日志文件未修改。
如果该应用是通过资源管理器启动或在Visual Studio中调试运行的,则日志记录有效。
有什么想法吗?
答案 0 :(得分:0)
尝试定义完整的写入路径,例如:C:\Users\user\Documents\log.txt
答案 1 :(得分:0)
new StreamWriter("log.txt", true)
写入当前工作目录,该目录可能在任何地方,包括网络共享或您没有写访问权的位置。始终指定任何文件的完整路径。如果要写入文件,则需要确保写入具有访问权限的位置。不要仅仅以管理员身份运行您的应用,这会打开各种安全漏洞。
您可能想要类似的东西:
var p = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "myAppName");
if (!Directory.Exists(p)) Directory.CreateDirectory(p);
using (var sw = new StreamWriter(Path.Combine(p, "log.txt"), true)
{
sw.WriteLine(str);
}