服务日志无法正常工作

时间:2014-09-18 08:56:36

标签: c#

我正在尝试向服务添加一些日志记录功能,但我希望它创建一个新日志,将旧日志复制到新日志中并删除原始日志。

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());
        }
    }

1 个答案:

答案 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());
        }
    }