我正在尝试向服务添加一些日志记录功能,但我希望它创建一个新日志,将旧日志复制到新日志中并删除原始日志。
Sudo for ClearLog:如果log1 full创建log2,则删除log1的内容
请参阅下面的代码,目前ClearLog功能没有按照我的意愿进行。
任何人都可以看到我做错了吗?
public static void WriteLog(string txt)
{
string fp = _AppPath + @"\Logging";
try
{
File.AppendAllText(fp + @"\Log1.txt", txt);
}
catch (IOException iex)
{
Debug.Print("Error writing log" + iex.ToString());
}
}
private static void ClearLog()
{
string fp = _AppPath + @"\Logging";
try
{
if (!File.Exists(fp + @"\Log1.txt"))
{
WriteErrorLog("");
}
else
{
File.AppendAllText(fp + @"\Log1.txt", fp + @"\Log2.txt");
File.Delete(fp + @"\Log1.txt");
WriteLog("");
}
}
catch (Exception ex)
{
WriteLog("Clear log failed " + ex.ToString());
}
}
答案 0 :(得分:1)
尝试创建文件路径的公共静态字段,因为您要打开两次相同的文件。
IE:public static string logfp = _AppPath + @"\Logging";
然后重命名这两个函数logfp中的所有内容。
改进示例(可以在两者中使用路径或在整个过程中声明)
private static void ClearLog()
{
string logfp = _AppPath + @"\Logging";
try
{
if (File.Exists(logfp + @"\Log2.txt"))
{
File.Delete(logfp + @"\Log2.txt");
if (File.Exists(logfp + @"\Log1.txt"))
{
File.Copy(logfp + @"\Log1.txt", logfp + @"\Log2.txt");
File.Delete(logfp + @"\Log1.txt");
}
else
{
File.AppendAllText(logfp + @"\Log1.txt", "New Log created: " + DateTime.Now.ToString());//showing you when it was created
}
}
else
{
File.Copy(logfp + @"\Log1.txt", logfp + @"\Log2.txt");
File.Delete(logfp + @"\Log1.txt");
}
}
catch (Exception ex)
{
WriteErrorLog("Clear log failed " + ex.ToString());
}
}