我正在开发一个应用程序,该程序调用一个已编译的可执行文件。此可执行文件的源代码项目文件由父级应用程序的解决方案文件引用。子可执行文件是一个独立的命令行应用程序。父级应用程序实际上是一个GUI包装器,用于控制台应用程序。当我编译控制台应用程序时,我可以访问已构建到应用程序中的所有log4net功能。但是,当我编译引用控制台应用程序源代码文件的父级项目时,一切都可以正常运行,但不会生成任何日志。这个错误是什么原因造成的,如何解决?log4net的内部调试机制没有抛出任何消息。
我正在开发一个应用程序,该程序调用一个已编译的可执行文件。此可执行文件的源代码项目文件由父级应用程序的解决方案文件引用。子可执行文件是一个独立的命令行应用程序。父级应用程序实际上是一个GUI包装器,用于控制台应用程序。当我编译控制台应用程序时,我可以访问已构建到应用程序中的所有log4net功能。但是,当我编译引用控制台应用程序源代码文件的父级项目时,一切都可以正常运行,但不会生成任何日志。这个错误是什么原因造成的,如何解决?log4net的内部调试机制没有抛出任何消息。
要使log4net开始记录所引用程序集中的日志,您需要:
Configure()
函数,可以通过调用log4net.Config.XmlConfigurator.Configure()
或将[assembly: log4net.Config.XmlConfigurator(Watch=true)]
添加到包装应用程序的AssemblyInfo.cs
文件中来实现。有关设置配置的更多信息,请参见:http://logging.apache.org/log4net/release/manual/configuration.html
我知道现在可能有点晚了,但是还是为了参考一下。 在你的应用程序中设置log4net.Internal.Debug = true,你就可以在控制台上看到问题了。(由于你的应用程序可能无法找到它的配置文件,这正是我的情况,所以要通过编程方式来实现)
在进程p上,在使用p.start()执行进程后,尝试将stdout写入控制台,使用以下代码: Console.write(p.StandardOutput.ReadToEnd());
你应该能够看到问题所在。(为什么log4net没有被配置或者为什么它没有记录日志) 在我的情况下,它正在父进程的工作目录中寻找app.config文件。(我的应用程序及其配置文件存在于文件系统的其他位置)