我有一个使用log4net的控制台应用程序(通过Castle Windsor)。我调试时,一切都记录在控制台上,但是当我发布并运行应用程序时,没有记录任何内容。
我将log4net配置放在一个单独的文件中(log4net.config)。 我认为它没有找到配置文件,但这只是猜测。
我是一名网络开发者,并没有部署过很多控制台应用。我错过了什么吗? 我是否需要手动将log4net.config文件复制到exe目录?
我在VS2010上。
的app.config:
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="castle" type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, Castle.Windsor"/>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>
</configSections>
<appSettings>
...
<add key="log4net.Internal.Debug" value="false"/>
</appSettings>
<startup>
<supportedRuntime version="v2.0.50727"/></startup>
<castle>
<components>
...
</components>
<facilities>
<facility id="loggingfacility" configfile="log4net.config" loggingapi="log4net" type="Castle.Facilities.Logging.LoggingFacility, Castle.Facilities.Logging"/>
</facilities>
</castle>
</configuration>
log4net.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<root>
<!-- Value of priority may be ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF -->
<priority value="ALL" />
<appender-ref ref="ConsoleAppender" />
</root>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d: [%-5p] %m%n" />
</layout>
</appender>
<logger name="Castle">
<level value="INFO" />
</logger>
</log4net>
</configuration>
答案 0 :(得分:7)
这是一个疯狂的猜测,但是您将log4net.config文件的“Build Action”标记为“Content”,并将其属性“Copy to Output directory”设置为“Copy always”。
这样您就不必复制文件了,这个文件被视为构建输出的“内容”,并将包含在您的发布中。