日期:2014-05-18  浏览次数:20869 次

有人用过 Log4Net 来记日志吗?关于配置文件的问题。
近期有一个项目需要使用到 Log4Net,以前没有弄过这东西,弄了下,现在无法生成日志,不知道问题出在哪儿了。

是这样的,我想把 Log4Net 再封装一下,就在解决方案中单独新建了一个类库项目,起名 Test.Log。
在这个项目下,引用了 log4net.dll,然后做了如下的事:
1、创建一个配置文件,起名 Log4Net.config,把它作为单独的配置文件,内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>
  <!-- log4net配置 -->
  <log4net>
  <!-- 指定用哪种 appender 输出,以及其默认的 level -->
  <root>
  <level value="ALL" />
  <appender-ref ref="RollingLogFileAppender" />
  </root>
  <logger name="File_Log">
  <level value="DEBUG" />
  <appender-ref ref="RollingLogFileAppender" />
  </logger>
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <param name="AppendToFile" value="true" />
  <param name="File" value="D:\LogTest.txt" />
  <param name="MaxSizeRollBackups" value="10" />
  <param name="MaximumFileSize" value="100KB" />
  <param name="RollingStyle" value="Size" />
  <param name="StaticLogFileName" value="true" />
  <layout type="log4net.Layout.PatternLayout">
  <param name="Header" value="[Header]\r\n" />
  <param name="Footer" value="[Footer]\r\n" />
  <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
  </layout>
  </appender>
  </log4net>
</configuration>

2、在这个项目的 AssemblyInfo.cs 文件的最后添加了一行:
  [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
3、新建了一个类 TestLog.cs 来封装 Log4Net,代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using log4net;

namespace Test.Log
{
  #region log类
  /// <summary>
  /// 公用类
  /// </summary>
  public class LogBLL
  {
  public static void Debug(string message)
  {
  log4net.ILog log = log4net.LogManager.GetLogger("File_Log");
  if (log.IsDebugEnabled)
  {
  log.Debug(message);
  }
  log = null;
  }
  public static void Error(string message)
  {
  log4net.ILog log = log4net.LogManager.GetLogger("File_Log");
  if (log.IsErrorEnabled)
  {
  log.Error(message);
  }
  log = null;
  }
  public static void Fatal(string message)
  {
  log4net.ILog log = log4net.LogManager.GetLogger("File_Log");
  if (log.IsFatalEnabled)
  {
  log.Fatal(message);
  }
  log = null;
  }
  public static void Info(string message)
  {
  log4net.I