C# log4net没有向日志文件或控制台写入任何消息
所以,我有一个控制台应用程序 使用log4net记录消息 下面是我的log4net.config文件C# log4net没有向日志文件或控制台写入任何消息,c#,console-application,log4net,C#,Console Application,Log4net,所以,我有一个控制台应用程序 使用log4net记录消息 下面是我的log4net.config文件 <?xml version="1.0"?> <log4net> <appender name="FileAppender" type="log4net.Appender.FileAppender"> <file value="log.txt" /> <appendToFile value="true"
<?xml version="1.0"?>
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="log.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="ERROR" />
<backColor value="Red, HighIntensity" />
</mapping>
<mapping>
<level value="WARN" />
<foreColor value="White" />
<backColor value="Yellow" />
</mapping>
<mapping>
<level value="INFO" />
<foreColor value="White" />
</mapping>
<mapping>
<level value="DEBUG" />
<backColor value="Green" />
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
结果创建了log.txt文件,但其大小为零,为空,没有任何内容记录到该文件中,也没有任何内容记录到控制台中
我做错了什么?
非常感谢。您的
log4net.config
是正确的
确保:
log4net.config
文件的Copy to Output Directory
属性设置为Copy Always
。这一点很重要,因为在构建和运行应用程序时,需要将配置文件复制到bin文件夹。通过右键单击配置文件并选择Properties
来执行此操作。然后将复制到输出目录
属性的值设置为始终复制
AssemblyInfo
文件的底部:[程序集:log4net.Config.XmlConfigurator(ConfigFile=“log4net.Config”)]
发现问题:)
看起来这是VS2017的一个新功能,我以前没有注意到
以前,只有通过添加引用或通过NuGet Package Manager手动添加相应的组件,才能解析名称空间
在VS2017中,当您尝试解析名称空间时,它实际上会为您安装这些包。这可能很方便,但也很令人沮丧,就像我的情况一样
不知道为什么,但是VS决定包含这个Common.Logging&Common.Logging.Core包,而不是我的解决方案中已有的log4net。
可能我是盲目地信任,没有注意到这些包与我想要使用的库无关。奇怪的是,代码编译得很好:)
这就是代码不起作用的原因。注意。试试这个方法。您必须将其命名为ColoredConsoleAppender,而不是ConsoleAppender。希望它能工作
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="log.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="ERROR"/>
<foreColor value="Red"/>
</mapping>
<mapping>
<level value="INFO"/>
<foreColor value="White"/>
</mapping>
<mapping>
<level value="DEBUG"/>
<foreColor value="Green"/>
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline"/>
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline"/>
</layout>
</appender>
<root>
<priority value="ALL"/>
<appender-ref ref="FileAppender"/>
<appender-ref ref="ColoredConsoleAppender"/>
</root>
我不记得“ALL”是有效的日志级别。尝试“DEBUG”并查看是否成功。您如何配置log4net(即,您告诉它在哪里加载配置文件)?如果您包含一个只配置log4net并记录消息的日志,那么它会有所帮助—不需要所有的作业管理器代码。另外,你到底是在调用LogManager.Flush吗?我想知道这两个问题,但是如果正在创建日志文件,这表明OP已经让log4net读取了配置。不幸的是,没有一个完整的例子,我们可以运行,这是很难帮助。
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="log.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="ERROR"/>
<foreColor value="Red"/>
</mapping>
<mapping>
<level value="INFO"/>
<foreColor value="White"/>
</mapping>
<mapping>
<level value="DEBUG"/>
<foreColor value="Green"/>
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline"/>
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline"/>
</layout>
</appender>
<root>
<priority value="ALL"/>
<appender-ref ref="FileAppender"/>
<appender-ref ref="ColoredConsoleAppender"/>
</root>