我正在尝试向服务添加一些日志功能,但是我希望它创建一个新的日志,将旧的日志复制到新的日志中,并删除原始日志。
Sudo for ClearLog:如果log1完全创建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());
}
}发布于 2014-09-18 09:00:37
尝试创建文件路径的公共静态字段,因为您要打开同一文件两次。
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());
}
}https://stackoverflow.com/questions/25908317
复制相似问题