【发布时间】:2015-01-14 13:18:54
【问题描述】:
我开始使用 log4net。我正在开发一个小型控制台项目,我必须在其中实现这个框架。
一开始我创建了一个小型控制台项目,看看它是如何在没有任何其他代码的情况下工作的。 我设法让它正常工作。
现在我尝试迁移应用程序中的所有代码,但在执行控制台应用程序的 .exe 时出现此错误:
"ERROR failed to find configuration section "log4net" in the application's .config
file.Check your .config file for the <log4net> and <configSections> elements. The
configuration section should look like : <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler.log4net"/>
代码:
public class Program
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger
(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public static void Main(string[] args)
{
log4net.Config.XmlConfigurator.Configure();
ILog log = log4net.LogManager.GetLogger(typeof(Program));
...
app.config 还不存在所以它的内容和我做的测试项目一样:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" />
</configSections>
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender,log4net">
<file value="D:\WEB\SAI\log\nas\log.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
</appender>
<root>
<level value="INFO"/>
<appender-ref ref="FileAppender"/>
</root>
</log4net>
</configuration>
在网上搜索了一番后,我补充说:
[assembly: log4net.Config.XmlConfigurator()]
按照建议发送到我的 AssemblyInfo.cs,但结果仍然相同... 提前感谢您的帮助
【问题讨论】:
-
尝试在您添加到
AssemblyInfo.cs的行中指定ConfigFile和Watch构造函数参数。例如:[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.Config", Watch = true)]. -
感谢它仍然无法正常工作
-
在执行 exe 时,
.config 是否仍然驻留在您的 exe 旁边?换句话说,您在执行之前没有将 exe 复制到新位置,而没有复制配置文件吗? -
这是问题对不起!非常感谢
-
这对我也有帮助。不错的收获。我也错过了。
标签: c# log4net app-config