vs2010使用log4net

来源:互联网 发布:淘宝城市人均消费2016 编辑:程序博客网 时间:2024/04/26 04:05

vs2010使用log4net

2195人阅读 评论(10)收藏 举报

        最近弄个VS2010项目,想用log4net来记录日志。现在最新的官方版本是log4net-1.2.10,在net2.0编译方式下没问题。如果要在vs2010中使用,那就得要费点劲了。

       下面是我成功使用的过程。

       首先去网站下载好log4net-1.2.10源码,编译源码前要进行以下修改:

       1.在源码项目添加“System.configuration”空间引用

       2.在项目属性的生成标签页中(log4net项目按右键,点属性,选生成标签),将条件编译符号定义修改成:NET;NET_2_0;NET_4_0

          同时修改输出路径为../build/bin/net/4.0/debug/

       3.在项目属性的应用程序标签页中,将目标框架修改成.NET Framework 4, 注意使用 .NET 4 Client Profile 将导致有问题。

       4.在项目的config目录下找到 XmlConfigurator.cs,打开它,在 623行左右替换 settings.ProhibitDtd = false; 在#elif NET_2_0 判断后加入.Net4新属性,修改成如下:

 #elif NET_2_0
// Allow the DTD to specify entity includes
XmlReaderSettings settings = new XmlReaderSettings();
#if NET_4_0
settings.DtdProcessing = DtdProcessing.Parse;
#else
settings.ProhibitDtd = false;
#endif

      5.修改项目中的AssemblyInfo.cs文件

         首先修改代码34行左右,将其改为如下:

#if (!NETCF && !NET_4_0)

//

// If log4net is strongly named it still allows partially trusted callers

//

[assembly: System.Security.AllowPartiallyTrustedCallers]

#endif  

          接着在 AssemblyInfo.cs 的Assembly Title 部份增加 .Net4,即#elif (NET_2_0)前,大约在53行左右,修改如下:

#elif (NET_4_0)

[assembly: AssemblyTitle("log4net for .NET Framework 4.0")]

#elif (NET_2_0)

[assembly: AssemblyTitle("log4net for .NET Framework 2.0")]

             好了。现在应该可以编译log4net了。

 

             对于log4net的使用

             1.将你的VS2010项目的目标框架设为.NET Framework 4;

             2.接着引用log4net.dll;

             3.然后设置你的app.config,注意:右键 app.config文件点击【属性】,在属性窗口中将‘复制到输出目录’改为‘如果较新则复制’
        或者你可以手动将 app.config 文件复制到你应用程序输出目录。如果不这样做 log4net 组件是找不到配置文件的,但是它本身不会报错。就是不会出现日志信息具体的配置。以下是我的配置示例如下:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,   
 log4net-net-1.0" />
  </configSections>
  <log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
      <file value="log.txt" />
      <appendToFile value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%timestamp - %-5level - [%thread] - %logger{1} - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="FileAppender" />
    </root>
  </log4net>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

 

          4.在项目的AssemblyInfo.cs文件中添加如下语句:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "App.config", Watch = true)]

          通过上面的配置就可以使用了。

          我们可以在窗体上测试一下:

     private void Form1_Load(object sender, EventArgs e)
        {
            log4net.ILog log = log4net.LogManager.GetLogger("MyLogger");
            log.Debug("test");
        }

 

很好,一运行,log.txt就生成了。


原创粉丝点击