【问题标题】:Writing log files写入日志文件
【发布时间】:2011-10-07 09:12:55
【问题描述】:

我正在开发作为 Windows 服务运行的 c# 应用程序。 我们在应用程序中所做的任何事务我都将其写入日志文件。 在 app.config 文件中添加了一个日志目录,如下所示。

<add key ="LogDir" value="log" />
    <add key ="LogLevel" value="2" />

在c#代码中,上面的访问如下。

int logLevel = Convert.ToInt32(ConfigurationManager.AppSettings["logLevel"]);
                if (logLevel > 0)
                {
                    logger = new Logger();
                    logger.TraceLevel = logLevel - 1;
                    logger.logDir = ConfigurationManager.AppSettings["logDir"];
                    logger.logFileBaseName = "touchserver";
                }

然后当任何过程发生时,我会将数据写入日志,如下所示。

TouchServer.Log(Logger.MessageType.Trace, 1, "Item successfully deleted");

当我在调试模式下运行我的应用程序(我的意思是作为控制台应用程序)时,日志文件将在应用程序的调试文件夹中创建,数据将写入日志文件。

但我的问题是,当我将应用程序安装为服务时,日志文件没有在调试文件夹中创建,并且我无法看到执行的操作,以防万一出现问题。

请帮我找到解决办法。

我正在使用 Installutil 命令安装服务。

提前致谢 桑吉塔

【问题讨论】:

    标签: c# file logging


    【解决方案1】:

    虽然您可以了解为什么这不起作用并修复解决方案,但总体而言没有必要实现日志记录组件。

    有很好的免费库可以很好地做到这一点。 log4net 很受欢迎。它易于使用,功能丰富且高效。看看吧。

    【讨论】:

    • 但是如果不允许服务帐户写入指定目录,即使是最好的日志 API 也无法解决 OP 的问题。
    • 非常感谢,它是通过更改代码中的路径来工作的。作为服务运行时,它试图写入 system32 文件夹。我将它转换为所需的路径。
    • 很高兴您解决了这个问题。我仍然会推荐使用 lo4net。
    【解决方案2】:

    但我的问题是,当我将应用程序作为服务安装时,日志文件没有在调试文件夹中创建,并且我无法看到执行的操作,以防万一出现问题。

    使用Process Monitor 查看 IO 操作的结果。我怀疑您会发现用于运行服务进程的身份在尝试写入日志文件时没有写入权限。

    但更好的选择是使用现有的日志库作为Hemal suggests

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2012-04-06
      • 2020-04-09
      • 1970-01-01
      • 2019-07-04
      • 2012-12-03
      • 2019-05-20
      相关资源
      最近更新 更多