无法弄清楚如何将记录添加到我的Windows服务!

时间:2010-09-19 03:10:44

标签: .net logging

我一整天都在搞乱这一点,但仍未找到解决方案。我创建了一个Windows服务,应该记录到它的安装目录(Program Files/Service/LOGS/

但是当我运行我的服务时,它没有做我期望它做的事情,也没有记录任何事情。我有一段时间在没有任何记录的情况下弄清楚问题是什么。下面是我用于记录的类,任何人都可以看到我做错了什么?我甚至尝试在“LOGS”文件夹中给出“Everyone”所有权限,看看是否存在问题(但没有运气)。

public class Logging
{
    public static void Log(string message)
    {

        string logFile = "LOGS/" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
        if (!Directory.Exists("LOGS"))
        {
            Directory.CreateDirectory("LOGS");
        }

        File.AppendAllText(logFile, message);

    }
}

服务成功启动,Windows事件查看器中没有错误...

更新

我已将日志路径更改为以下内容,但仍然没有运气:

string logFile = @"F:\LOGS\" + DateTime.Now.ToString("yyyyMMdd") + ".txt";

3 个答案:

答案 0 :(得分:4)

嗯,对于初学者,你不应该在Program Files目录中的任何文件夹中写任何东西。这很糟糕,在Vista,Windows 7或Windows Server 2008及更高版本上都会失败。

其次,您的代码实际上并没有指定您的想法。服务的“当前目录”不是它的程序文件目录。它可能类似于它运行的用户主目录,或Windows \ system32。同样,应用程序也不应该有写入持久性。相反,您应该登录到Program Data子目录。

答案 1 :(得分:1)

您是否尝试过调用Directory.GetCurrentDirectory并将当前目录的名称写入文件(使用绝对路径,并配置权限以使“Everyone”具有目标文件夹的“完全控制权”)。这样你就可以发现它是否正在写你认为应该写的地方。

同样重要的是:当您的服务正在运行时,它运行的是哪个帐户?如果用于运行服务的帐户没有在Program Files / Service / LOGS /上写入的权限,那么这可能是您没有看到任何内容写入的原因。

当然,您也可以使用写入事件日志,而不是写入文件系统(http://support.microsoft.com/kb/307024)。 IMO是推荐的做这种事情的方式。

答案 2 :(得分:1)

所以你现在写信给F:\ LOGS \,但是:

  • 您使用什么帐户来运行服务?该帐户是否可以写入F:\ LOGS \?
  • 另外,您是否配置了该文件夹以便“Everyone”具有“完全控制权”?