使用log4net

[size=large] 使用log4net [/size]

做了7年的java,初次接触.net,发现asp.net的自己的trace用起来不爽。
System.Diagnostics.Debug.WriteLine( ); 也只能在debug的时候用,程序部署的iis上后就没用了。
习惯了在java程序里使用log4j和common-logging,所以自然而然的想到了log4net。

[size=large]0 本文的目的是介绍HOW,不是介绍WHY[/size]
因为本人是java程序员,对于开源的工具有偏好,如果你是微软铁杆粉丝,需要官方提供的log方案,推荐您使用enterprise library.

另,本文描述的步骤是经过本人验证可行的,参考了许多中英文资料,但是负责任的说:本文是原创,不是ctrl-c ctrl-v的结果。

[size=large]1 下载 log4net 包[/size]
http://logging.apache.org/log4net/index.html

[size=large]2 配置[/size]
2.1 用Visual Studio创建一个 asp.net appliction
2.2 向项目添加 referencs
log4net提供了很多版本的dll, 选择bin/net/2.0目录下的,显然log4net很久没有更新了,没有.net 3.5版本,不过没关系,一样用

2.3 修改AssemblyInfo.cs
添加
[assembly:log4net.Config.XmlConfigurator(ConfigFile="Web.config", Watch=true)]

2.4 配置web.config
在 configuration/configSections 元素下面添加
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

然后在添加 configuration 元素下面添加
<!--log4net begin-->
<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="D:\log\4.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="2" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
</layout>
</appender>

<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>

这段配置和log4j的配置一样,关于log格式定义 conversionPattern 如何编写,请参考 附录


[size=large]3 代码[/size]
3.1 创建 log 对象
private static readonly ILog log = LogManager.GetLogger(typeof(_Default));

3.2 记录log
log.Debug("something");


[size=large]4 IIS 环境配置[/size]
上述配置完成后,可以直接在vs里进行debug,日志文件可以自动创建,并正确生成。但是程序发布到iis后,发现没有日志文件
折腾了很久才找到原因是程序运行在iis上没有写 d:\log\目录的权限。
具体配置如下:(windows2003 环境)
4.1 在iis 打开 已经部署的程序的属性
查看程序使用的application pool


[img]http://dl.iteye.com/upload/attachment/296161/8373e454-0640-3ad2-a74e-ba3a7b6e5da8.png[/img]

4.2 查看application pool使用的windows 账户或者组

[img]http://dl.iteye.com/upload/attachment/296165/450664f2-1bdb-3ca6-9f20-1b2eb10e04a8.jpg[/img]


4.3 给log输出的目录配置权限
上两步可以了解到程序在iis里运行时候使用的group是 NETWORK SERVICE


[img]http://dl.iteye.com/upload/attachment/296167/3c0f12ab-cca4-3901-9ffa-3162de592af2.jpg[/img]


[b]附录1 [/b]
!-----------------------------------------------------------------------------
! PATTERN FORMATS GLOSSARY
!-----------------------------------------------------------------------------
! %n - newline
! %m - your log message
! %p - message priority (FATAL, ERROR, WARN, INFO, DEBUG or custom)
! %r - millisecs since program started running
! %% - percent sign in output
!
!-----------------------SOME MORE CLUTTER IN YOUR LOG-------------------------
! %c - name of your category (logger), %c{2} will outputs last two components
! %t - name of current thread
! %x - Nested Diagnostic Context (NDC) (you supply it!)
!
!-------------------------SLOW PERFORMANCE FORMATS----------------------------
! %d - date and time, also %d{ISO8601}, %d{DATE}, %d{ABSOLUTE},
! %d{HH:mm:ss,SSS}, %d{dd MMM yyyy HH:mm:ss,SSS} and so on
! %l - Shortcut for %F%L%C%M
! %F - Java source file name
! %L - Java source line number
! %C - Java class name, %C{1} will output the last one component
! %M - Java method name
!
!------------------------------FORMAT MODIFIERS-------------------------------
! %-any_letter_above - Left-justify in min. width (default is right-justify)
! %20any_letter_above - 20 char. min. width (pad with spaces if reqd.)
! %.30any_letter_above - 30 char. max. width (truncate beginning if reqd.)
! %-10.10r - Example. Left-justify time elapsed within 10-wide field.
! Truncate from beginning if wider than 10 characters.
!-----------------------------------------------------------------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值