如何在一个工程里面实现不同的功能打入不同的日志文件中【log4net】



config配置文件如下:

None.gif <? xml version="1.0" encoding="utf-8"  ?>
None.gif
< configuration >
None.gif    
< configSections >
None.gif        
< section  name ="log4net"  type ="log4net.Config.Log4NetConfigurationSectionHandler,log4net"   />
None.gif    
</ configSections >
None.gif    
< log4net >
None.gif        
< appender  name ="RollingFile"  type ="log4net.Appender.RollingFileAppender" >
None.gif            
< file  value ="log/log.txt"   />
None.gif            
< appendToFile  value ="true"   />
None.gif            
< maximumFileSize  value ="300KB"   />
None.gif            
< maxSizeRollBackups  value ="2"   />
None.gif            
< layout  type ="log4net.Layout.PatternLayout" >
None.gif                
< param  name ="ConversionPattern"  value ="%d [%t] %-5p %c [%x] - %m%n"   />
None.gif            
</ layout >
None.gif        
</ appender >
None.gif        
< appender  name ="LoginFile"  type ="log4net.Appender.RollingFileAppender" >
None.gif            
< file  value ="log/login.txt"   />
None.gif            
< appendToFile  value ="true"   />
None.gif            
< maximumFileSize  value ="300KB"   />
None.gif            
< maxSizeRollBackups  value ="2"   />
None.gif            
< layout  type ="log4net.Layout.PatternLayout" >
None.gif                
< param  name ="ConversionPattern"  value ="%d [%t] %-5p %c [%x] - %m%n"   />
None.gif            
</ layout >
None.gif        
</ appender >
None.gif        
< root >
None.gif            
< level  value ="ALL"   />
None.gif            
< appender-ref  ref ="RollingFile"   />
None.gif        
</ root >
None.gif        
< logger  name ="LoginFile" >
None.gif            
< level  value ="ALL"   />
None.gif            
< appender-ref  ref ="LoginFile"   />
None.gif        
</ logger >
None.gif    
</ log4net >
None.gif
</ configuration >
None.gif

可以增加多个logger节和appender节配合使用
<level value="ALL"/> 这句话意思是针对Warn、Debug、Info所有级别的提示都使用下面的介质

服务器端代码如下:
None.gif namespace  log4net
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// Summary description for Class1.
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    class Class1
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// The main entry point for the application.
InBlock.gif        
/// </summary>
ExpandedSubBlockEnd.gif        
/// 

InBlock.gif        public static readonly log4net.ILog log2 = log4net.LogManager.GetLogger("LoginFile");
InBlock.gif        
public static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
InBlock.gif        [STAThread]
InBlock.gif        
static void Main(string[] args)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            log2.Info(
"----info----");
InBlock.gif            log2.Warn(
"----info----");
InBlock.gif            log2.Debug(
"----info----");
InBlock.gif            log.Info(
"----info----");
InBlock.gif            log.Warn(
"----info----");
InBlock.gif            log.Debug(
"----info----");
InBlock.gif            
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

Log4net框架定义了一个叫做LogManager的类,用来管理所有的logger对象。它有一个GetLogger()静态方法,用我们提供的名字参数来检索已经存在的Logger对象。如果框架里不存在该Logger对象,它也会为我们创建一个Logger对象。代码如下所示:

log4net.ILog log = log4net.LogManager.GetLogger("logger-name");

通常来说,我们会以类(class)的类型(type)为参数来调用GetLogger(),以便跟踪我们正在进行日志记录的类。传递的类(class)的类型(type)可以用typeof(Classname)方法来获得,或者可以用如下的反射方法来获得:

System.Reflection.MethodBase.GetCurrentMethod().DeclaringType

尽管符号长了一些,但是后者可以用于一些场合,比如获取调用方法的类(class)的类型(type)。

程序中用到了就记录下来,如有什么不对的地方请指出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值