我正在开发c#应用程序,它作为Windows服务运行。 我在应用程序中进行的任何事务我将其写入日志文件。 在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命令安装服务。
提前致谢 桑吉塔
答案 0 :(得分:3)
虽然您可以了解为什么这不起作用并修复解决方案,但总体而言,不需要实现日志记录组件。
有很好的免费库可以很好地完成这项工作。 log4net很受欢迎。它易于使用,功能丰富,高效。看看吧。
答案 1 :(得分:2)
但我的问题是,当我将我的应用程序安装为服务时,日志文件没有在调试文件夹中创建,并且我无法看到执行的操作,以防万一出错。
使用Process Monitor查看IO操作的结果。我怀疑你会发现用于运行服务进程的身份在尝试写日志文件时没有写权限。
但更好的选择是将现有的日志记录库用作Hemal suggests。