将配置日志发送到Eventlog后,它适用于SmtpSender。但是filelogger不会记录,它会在路径中创建日志文件,但不会执行任何调试日志。
<root>
<level value="DEBUG" />
<appender-ref ref="EventLogAppender" />
</root>
<logger additivity="false" name="SmtpLogger">
<level value="FATAL"/>
<appender-ref ref="SmtpAppender" />
</logger>
<logger name="RollingFileAppender">
<level value="DEBUG"/>
<appender-ref ref="RollingFileAppender"/>
</logger>
但是当我将根记录器更改为RollingFileAppender时,它会记录到文件,
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>
<logger additivity="false" name="SmtpLogger">
<level value="FATAL"/>
<appender-ref ref="SmtpAppender" />
</logger>
<logger name="RollingFileAppender">
<level value="DEBUG"/>
<appender-ref ref="RollingFileAppender"/>
</logger>
知道为什么会这样吗?如何让文件记录器在这种情况下工作。
答案 0 :(得分:0)
您没有发布appender配置,但是找出问题的最简单方法是启用内部调试。这将告诉你滚动文件appender出了什么问题:
在log4net中启用内部调试有两种不同的方法。 这些列在下面。首选方法是指定 应用程序配置文件中的log4net.Internal.Debug选项。
•也可以通过在中设置值来启用内部调试 应用程序的配置文件(不是log4net配置文件, 除非log4net配置数据嵌入在应用程序的配置中 文件)。必须将log4net.Internal.Debug应用程序设置设置为 值为true。例如:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
</configuration>
启动时立即读取此设置将导致所有内部设置 调试要发出的消息。
•要以编程方式启用log4net的内部调试,您需要进行设置 log4net.Util.LogLog.InternalDebugging属性为true。明显 设置越快,将产生越多的调试。
内部调试消息被写入控制台和 System.Diagnostics.Trace系统。如果应用程序没有 控制台记录的消息将丢失。注意一个 应用程序可以通过设置重定向控制台流 System.Console.Out。 Trace系统默认发送消息 到附加的调试器(消息将出现在输出中) 窗口)。如果进程没有连接调试器那么 消息被发送到系统调试器。像DebugView这样的实用程序 来自http://www.sysinternals.com的内容可用于捕获这些内容 消息。
当log4net内部调试消息写入 System.Diagnostics.Trace系统可以重定向那些 消息到本地文件。您可以通过添加来定义跟踪侦听器 以下是您的应用程序的.config文件:
<configuration>
...
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\tmp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
...
</configuration>
Make sure that the process running your application has permission to write to this file.
答案 1 :(得分:0)
我设法得到了日志记录工作,实际上我做了这个实验并且有效。
将RollingFileAppender添加到根元素
<root>
<level value="DEBUG" />
<appender-ref ref="EventLogAppender" />
<appender-ref ref="RollingFileAppender"/>
</root>
<logger additivity="false" name="SmtpLogger">
<level value="FATAL"/>
<appender-ref ref="SmtpAppender" />
</logger>
<logger name="RollingFileAppender">
<level value="DEBUG"/>
<appender-ref ref="RollingFileAppender"/>
</logger>