这是我第一次使用 Log4net
。它没有显示任何错误,但没有写入文件。我在我的 AppConfig
文件中添加了以下内容:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>
</configSections>
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%5level [%thread] (%file:%line) - %message%newline"/>
</layout>
</appender>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\CE\FileControllerLog.txt"/>
<layout type="log4net.Layout.PatternLayout">
<!--<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>-->
<param name="ConversionPattern" value="%d %m%n"/>
</layout>
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<maxSizeRollBackups value="2"/>
<maximumFileSize value="10MB"/>
<staticLogFileName value="true"/>
</appender>
<logger name="FileControllerLog">
<level value="INFO"/>
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender"/>
</logger>
[assembly: log4net.Config.XmlConfigurator(Watch = true)] //added in assembly info file
在代码中:
ILog logger = log4net.LogManager.GetLogger("FileControllerLog");
logger.Info("Method starts");
它没有记录。
最佳答案
试试这个:
<log4net>
<root>
<level value="Error" />
<appender-ref ref="RollingLogFileAppender" />
</root>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="<FilePath>" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="14" />
<countDirection value="1" />
<maximumFileSize value="4096KB" />
<lockingModel type="log4net.Appender.FileAppender.MinimalLock" />
<staticLogFileName value="true" />
<PreserveLogFileNameExtension value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newlineDate[%date] ThreadID[%thread] Level[%-5level] Logger[%logger]] - %message%newline" />
</layout>
</appender>
</log4net>
除此之外,在配置部分应该有一个 Log4Net 条目,示例:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
</configuration>
在您的 Logger 类中有 ILog
变量,并在构造函数中像这样配置记录器:
private ILog log;
public Log4NetLogger()
{
log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
log4net.Config.XmlConfigurator.Configure();
}
关于.net - Windows 服务的 Log4net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17874999/