我使用Castle和Log4Net。所有文件夹都已创建,但日志信息未写入文本文件。
这是配置;
<add key="log4net.Internal.Debug" value="true"/>
<add key="log4net.Internal.Error" value="true"/>
<add key="log4net.Internal.Info" value="true"/>
<add key="log4net.Internal.Fatal" value="true"/>
<add key="log4net.Internal.Warn" value="true"/>
<appender name="debugAppender" type="log4net.Appender.RollingFileAppender,log4net">
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="DEBUG" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
<file value="..\\..\\LOGS\\DEBUG\\" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<DatePattern value="yyyy\\\\MM\\\\dd\\\\yyyyMMdd'_debug.txt'" />
<maxSizeRollBackups value="-1" />
<maximumFileSize value="50MB" />
<countDirection value="1" />
<preserveLogFileNameExtension value="true" />
<encoding value="utf-8" />
<!--<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />-->
<layout type="log4net.Layout.PatternLayout,log4net">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>`
<logger name="Log">
<appender-ref ref="errorAppender" />
<appender-ref ref="infoAppender" />
<appender-ref ref="debugAppender" />
<appender-ref ref="warningAppender" />
<appender-ref ref="fatalAppender" />
</logger>`
我正在使用控制台应用程序,Main方法将像这样开始;
XmlConfigurator.Configure(new FileInfo("log4net.config"));
每个人都有权编写,阅读LOGS文件夹中的所有文件。
感谢您的帮助。
答案 0 :(得分:0)
我使用了相同的配置,只需稍加修改即可尝试
我创建了一个控制台应用程序:
这是我的切入点:
public class Program
{
private static readonly log4net.ILog log
= log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
static void Main(string[] args)
{
XmlConfigurator.Configure(new FileInfo("..\\..\\log4net.config"));
log.Debug("Hi this is DEBUG from logging");
log.Info("This is information from logger");
log.Error("This is Error from logger");
Console.ReadLine();
}
}
以下是我使用的配置:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,
log4net"/>
</configSections>
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender,log4net">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{ABSOLUTE}
[%thread] %level %logger - %message%newline"/>
</layout>
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="DEBUG" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
<appender name="debugAppender" type="log4net.Appender.RollingFileAppender,log4net">
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="DEBUG" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
<file value="..\\..\\LOGS\\DEBUG\\" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<DatePattern value="yyyy\\\\MM\\\\dd\\\\yyyyMMdd'_debug.txt'" />
<maxSizeRollBackups value="-1" />
<maximumFileSize value="50MB" />
<countDirection value="1" />
<preserveLogFileNameExtension value="true" />
<encoding value="utf-8" />
<!--<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />-->
<layout type="log4net.Layout.PatternLayout,log4net">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="ConsoleAppender" />
<!--<appender-ref ref="DebugOutputAppender" />-->
<appender-ref ref="debugAppender" />
</root>
</log4net>
</configuration>
您可以注意到我已经 添加了 控制台 appender,以便在检查日志文件之前检查日志记录是否在控制台上正常工作。
注意:使用与您相同的配置,我无法在控制台和文件中记录任何信息,尽管文件夹和文件的创建没有任何问题。
我所做的更改是在上面的配置代码段中添加了一个 root 级别元素。 您需要有一个根节来容纳顶级记录器引用。这些是从基本记录器(root)继承信息的记录器。
我已经 删除了 您使用过的其他记录器。
有时您会想要了解有关应用程序特定部分的更多信息。 log4net通过允许您指定除根记录器之外的其他记录器引用来预期这一点。例如,这是一个额外的记录器,用于记录在 OtherClass 类对象中发生的控制台消息:
<logger name="Log4NetTest.OtherClass">
<level value="DEBUG"/>
<appender-ref ref="ConsoleAppender"/>
</logger>
如果您对此非常肯定,请使用它。
从log4net开始的好教程是here。
如果您遇到任何问题,请告诉我。