log4net不会为引用的项目文件创建日志文件

问题描述:

我正在构建一个调用编译的可执行文件的应用程序。所述可执行文件的源代码项目文件由父应用程序的解决方案文件引用。子可执行文件是一个独立的命令行应用程序。父对控制台应用程序来说是一个有效的GUI包装。当我编译控制台应用程序时,我可以访问应用程序中内置的所有log4net功能。但是,当我编译引用控制台应用程序的源代码文件的父项目时,所有内容都可以正常运行,但不会生成日志。什么会导致这个错误发生,以及如何解决这个问题? log4net的内部调试机制不会抛出任何消息。log4net不会为引用的项目文件创建日志文件

对于log4net的开始引用的组件中的日志,你必须:

  • 呼叫的log4net的Configure()功能通过调用log4net.Config.XmlConfigurator.Configure()当你的应用程序启动,或通过添加[assembly: log4net.Config.XmlConfigurator(Watch=true)]AssemblyInfo.cs文件的包装器应用。
  • 如果您尚未这样做,请在GUI包装的app.config中创建一个log4net配置部分。将app.config文件添加到您的项目中,并将引用库中的log4net配置信息复制到其中。
  • 确保运行应用程序的帐户有权在日志目录内写入和创建文件(假设您使用基于文件的日志记录)。

有关设置你的配置查看更多资讯:http://logging.apache.org/log4net/release/manual/configuration.html

+0

GUI已经正确实施了log4net并运行。两者都使用assemblyinfo.cs装饰方法。 – XBigTK13X 2010-07-12 19:57:29

+0

如果是这种情况,则应该发生log4net配置。 GUI应用程序是否具有应用程序配置文件,并使用log4net配置部分进行设置?最后,GUI应用程序日志记录是否总是或偶尔出现问题? – Joe 2010-07-12 20:24:51

+0

每个应用程序都有一个单独的app.config文件,它被设置为使用log4net。这个问题不断发生,当GUI调用时,在控制台应用程序中记录功能从未出现过。无论设置哪个项目,Startup项目都是唯一可以访问日志记录支持的项目,尽管应用程序中的其他任何项目都可以根据需要运行。 – XBigTK13X 2010-07-12 20:49:57

我知道这是为时已晚,但无论如何仅供参考。 在应用程序中设置log4net.Internal.Debug = true,您可能会在控制台上看到问题。 (以编程方式执行此操作,因为您的应用程序可能无法找到它的配置文件,这是我的情况)

在进程p上,在使用p.start()执行进程之后尝试写入stdout以此来安慰; Console.write(p.StandardOutput.ReadToEnd());

您应该能够看到问题。 (为什么log4net没有被配置或为什么它不记录) 在我的情况下,它正在寻找父进程的工作目录中的app.config文件。 (我的应用程序和它的配置存在于文件系统的其他地方)