铱星·江南
桃花坞里桃花庵 桃花庵下桃花仙 桃花仙人种桃树 又摘桃花换酒钱 酒醒只在花前坐 酒醉还来花下眠 半醉半醒日复日 花落花开年复年
posts - 4,  comments - 20,  trackbacks - 9
     最近项目里修改的工作挺多,终于想起来用log4net了。下载了最新的版本1.2.9,然后看网上别人的例子,试着做。没想到,网上的大部分都是1.2.8之前的版本,而且好像从1.2.9开始,配置和使用的不一样了(晕,我怎么这么倒霉)。昨天在博客园看到有人研究1.2.9,不过他的用法太烦了,我仔细研究了一下自带的例子,原来还是可以象以前一样简单配置和操作。

     首先,配置文件由以前放在web.config文件里,改用单独的xml文件里了。例如,项目WebApp,它的配置文件就是WebApp.dll.log4net(扩展名也是可配置的,见下文)

<?xml version="1.0" encoding="utf-8" ?>
<log4net debug="false">
 <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
  <file value="webapp-log.txt" />
  <appendToFile value="true" />
  <layout type="log4net.Layout.PatternLayout">
   <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
  </layout>
 </appender>
 <appender name="HttpTraceAppender" type="log4net.Appender.AspNetTraceAppender" >
  <layout type="log4net.Layout.PatternLayout">
   <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
  </layout>
 </appender>
 <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="log-data\rolling-log.txt" />
  <appendToFile value="true" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="5MB" />
  <rollingStyle value="Size" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
   <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
  </layout>
 </appender>
 <root>
  <level value="DEBUG" />
  <appender-ref ref="LogFileAppender" />
  <appender-ref ref="HttpTraceAppender" />
  <!-- <appender-ref ref="RollingLogFileAppender" /> -->
 </root>
</log4net>

我觉得挺好这样,至少不用在web.config里配置节:

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

 

    然后在global文件里,添加代码(红色部分为添加的代码,蓝色部分为1.2.8之前的配置情况,大家可以比较一下):

Imports System.Web
Imports System.Web.SessionState

<Assembly: log4net.Config.XmlConfigurator(ConfigFileExtension:="log4net", Watch:=True)>

Public Class Global
    Inherits System.Web.HttpApplication

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        ' 在应用程序启动时激发
        'log4net.Config.DOMConfigurator.Configure()
    End Sub

End Class

上面的代码

<Assembly: log4net.Config.XmlConfigurator(ConfigFileExtension:="log4net", Watch:=True)> 中log4net指的是前面配置文件WebApp.dll.log4net的扩展名。

    最后,在项目里就可以运用了

... ....

Imports log4net

Namespace WebApp
 Public Class WebForm1
  Inherits System.Web.UI.Page

  Private Shared ReadOnly log As ILog = LogManager.GetLogger(GetType(WebForm1))

先实现Ilog接口,然后用类似:

If log.IsDebugEnabled Then log.Debug("txtAdd1=[" & txtAdd1.Text & "] txtAdd2=[" & txtAdd2.Text & "]")

就可以了,还是挺简单的。

posted on 2005-05-16 13:17 铱星 阅读(2279) 评论(17)  编辑 收藏 网摘

FeedBack:
2005-05-16 14:10 | ttyp      
此组件和自定义一个类(里面写个往一个文本文件添加一行的函数)有何优势?
  回复  引用  查看    
#2楼 [楼主]
2005-05-16 14:15 | 铱星      
这个组件的最大好处是可配置,日志可以有多种介质,如数据库,文本文件,系统的日志系统等,你不需要更改程序就可以重新定义日志输出到哪里,并且输出的位置和名称都可以重定义(文本文件)。
另外,这个组件是开源项目。
  回复  引用  查看    
2005-05-16 14:36 | neuhawk      
我在项目中,就用了log4ne,非常好用。
不过我还稍微封装了一下。
  回复  引用  查看    
2005-05-16 18:59 | kwklover      
有没考虑过log4net本身抛错的时候,应该怎么处理 ?
  回复  引用  查看    
#5楼 [楼主]
2005-05-16 22:01 | 铱星      
还没碰到过
有谁知道?
  回复  引用  查看    
2005-05-17 08:52 | nineteen@newsmth [未注册用户]
别以为简单在加一个写文本文件的语句就可以记录日志的,不信就加加试试。大数据量情况下,记录日志成了不小的开销,并发情况下,日志又会出现交叉的情况,呵呵。
不过我在使用Log4net的时候发现有些时候它不工作,盖了,而且我没办法重现那个错误。
自己写了一个Log组件,两三百行,配置非常简单,有没有朋友愿意试试?
www.newsmth.net,dotNET版精华区,新水幕时代,原创文章,Nineteen目录下
  回复  引用    
2007-02-08 18:19 | 飞越梦想      
日志文件要按当前用户名称及今天的日期为文件名来存储,应该如何配置
  回复  引用  查看    
2008-02-26 11:21 | 留恋星空      
mark
  回复  引用  查看    




标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接:
 


<2005年5月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

与我联系

搜索

 

常用链接

留言簿(1)

随笔档案(4)

我关注的博客

积分与排名

  • 积分 - 12280
  • 排名 - 3240

最新评论

阅读排行榜

评论排行榜