对于log4net的窗口服务窗口、log4net

2023-09-04 05:52:45 作者:拉鈎上吊壹百年不許變

这是我第一次使用 log4net的。它不显示任何错误,但不写入文件。我说在我的的AppConfig 文件如下:

This is first time I am using Log4net. It doesn't show any errors, but is not writing to file. I added following in my AppConfig file:

<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

在code:

and in code:

ILog logger = log4net.LogManager.GetLogger("FileControllerLog");
logger.Info("Method starts");

这不是记录。

It's not logging.

推荐答案

试试这个:

 <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的在配置部分,例如一个条目:

In addition to this there should be a entry of Log4Net in Config Section, Example:

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>
</configuration>

在你的Logger类有的ILog 变量,并在构造函数中配置该记录器是这样的:

In your Logger class have ILog variable and in constructor configure the logger like this:

private ILog log;

public Log4NetLogger()
{
    log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    log4net.Config.XmlConfigurator.Configure();
}