vs2010使用log4net

来源:互联网 发布:windows 10 dell oem 编辑:程序博客网 时间:2024/04/27 08:50

        最近弄个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就生成了。

 

 

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 发邮箱文件超2g怎么办 报考计算机二级邮箱不存在怎么办 苹果邮箱登录要imap密码怎么办 注销微信支付后怎么办 手机卡注销后支付宝怎么办 12306手机邮箱都换了怎么办 网易手机邮箱手机换了怎么办 崩坏3号被盗了怎么办 qq账号被永久冻结了怎么办 淘宝账号被永久冻结了怎么办 qq账号被永久冻结怎么办 多多理财账号冻结了怎么办 苹果id安全问题忘记了怎么办 网易邮箱帐号忘了怎么办 网易邮箱密码忘记了怎么办 网易邮箱密码忘了怎么办 网易邮箱忘记邮箱账号怎么办 崩坏3三无号被盗怎么办 qq邮箱给58占用怎么办 支付宝邮箱被占用怎么办 苹果手机下载不了qq怎么办 附件预览时发生错误怎么办 手机下载的压缩包打不开怎么办 邮箱提示中转站剩余容量不足怎么办 手机邮箱密码忘记了怎么办 垃圾邮件被系统删除了怎么办 邮箱里的邮件下载不了怎么办 qq邮箱下载不了文件怎么办 苹果手机忘记邮箱密码怎么办 oppo手机安装包损坏怎么办 手机安装包损坏无法安装怎么办 手机qq安装包损坏了怎么办 安装包损坏无法安装怎么办 方舟生存进化安装包损坏怎么办 如果安装包坏了怎么办 酷狗下载音乐收费怎么办 酷狗下载歌曲收费怎么办 酷狗音乐下载歌曲要钱怎么办 酷狗音乐下载要钱怎么办 手机酷狗音乐下载收费怎么办 咪咕视频静音了怎么办