转 - 用log4.net记录日志

原文地址:http://hi.baidu.com/huaiwen/blog/item/4de29e22efa10c42ad34dedd.html

 

 

1.log4net.rar (首先下载合适的log4net.dll,此处用的.net frame1.1)

2.添加引用.引入log4net.dll

3.编写类 LogUtil,(为了方便复用而独立建一个日志记录类,该类有静态方法Log进行日志记录,且有一个私有的,只读的静态变量log4net.ILog bizLog)

using System;

namespace Test.Log
{
    
/// <author>9421</author>
    
/// <date>2010-01-07</date>
    
/// <summary>
    
/// 日志记录类
    
/// </summary>
    public class LogUtil
    {
        
/// <summary>
        
/// business log
        
/// 通过"BusinessLogger"从web.config中读取bizLog的信息
        
/// </summary>
        private static readonly log4net.ILog bizLog = log4net.LogManager.GetLogger("BusinessLogger");

        
/// <summary>
        
/// log an information message.
        
/// </summary>
        
/// <param name="message">message to be logged</param>
        public static void Log(string message)
        {
            
try
            {
                
if (!bizLog.IsInfoEnabled)
                {
                    
//若不可用,重新配置
                    log4net.Config.XmlConfigurator.Configure();
                }
                bizLog.Info(message);
                
/* 可根据不同情况,调用不同的方法进行记录
                bizLog.Debug(message);
                bizLog.Error(message);
                bizLog.Fatal(message);
                 
*/
            }
            
catch (Exception ex)
            {
                ex.GetType();
            }
        }
    }
}

4.在web.config中配置LogUtil类中log4net.ILog的相关信息:

 

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

  
<log4net debug="true">
    
<appender name="BusinessRollingFile" type="log4net.Appender.RollingFileAppender,log4net">
      
<file value="log/BusinessLog"/>
      
<appendToFile value="true"/>
      
<datePattern value="yyyyMMdd&quot;.log&quot;"/>
      
<StaticLogFileName value="false"/>
      
<maxSizeRollBackups value="100"/>
      
<rollingStyle value="Date"/>
      
<encoding value="UTF-8"/>
      
<layout type="log4net.Layout.PatternLayout">
        
<conversionPattern value="%-30d{yyyy/MM/dd HH:mm:ss} %m %n"/>
      
</layout>
    
</appender>

    
<logger name="BusinessLogger">
      
<level value="INFO"/>
      
<appender-ref ref="BusinessRollingFile"/>
    
</logger>
  
</log4net>

ps:<1>.logger 的name 为BusinessLogger,也即在LogUtil中使用GetLogger("BusinessLogger")所获得的logger信息;--可扩展为多个logger配置信息,根据业务项目需要,通过不同的name获得所需的logger

    <2>. logger的appender是记录的方式.此处为type="log4net.Appender.RollingFileAppender,log4net" 代回滚的文件输出格式

    <3>.logger的level属性定义不同级别,七种日志级别:debug,info,warn,error,fatal,all,off..此处为info

    <4>.appender的属性: file 对应日志文件的名称(此处包含路径,没有则新建),StaticLogFileName  是否为固定的文件名(此处为false不固定),在文件名不固定的前提下,设置<appendToFile value="true"/>      <datePattern value="yyyyMMdd&quot;.log&quot;"/>
将根据日期,为日志文件定义不同的文件名(如此处为类似BussinessLog20091201.log,BussinessLog20091202.log的文件名

5..在需要的地方调用即可

LogUtil.Log("信息:9421登陆成功");
 

 

引用::参考::

log4的使用方法:

log4是具有日志记录功能,主要通过一个配置文件来对程序进行监测
有两种配置方式:一种程序配置,一种文件配置
有三个主要单元要了解,Logger,appender,layout.

logger是进行记录的主要类,appender是记录的方式,layout是记录的格式
logger七种日志级别:debug,info,warn,error,fatal,all,off
最常用的应该是debug()和info();而warn()、error()、fatal()仅在相应事件发生后才使用

appender主要分三类,终端输出,文件输出,流输出
ConsoleAppender
FileAppender
WriterAppender

layout也分三类:简单格式,html格式,匹配格式
SimpleLayout
HTMLLayout
PatternLayout

输出简写:(用在PatternLayout)
%m 输出代码中指定的消息
%p 输出优先级
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。一般使用了它就不需使用%c了


作用实例:
程序配置一般过程:
1.得到特定名称的logger
2.得到其中一个layout
3.根据layout得到appender
4.logger添加appender
5.logger设置级别
6.logger输出有级别的日志信息

程序:
Logger logger = Logger.getLogger(Test.class.getName())      //取得logger
SimpleLayout simpleLayut = new SimpleLayout()               //取得layout
FileAppender fa = new FileAppender(simpleLayout,"test.log") //取得appender
logger.addAppender(fa)                                      //添加appender
logger.set((Level)Level.DEBUG)                              //设置级别
logger.debug("hihihihih")                                   //记录信息


文件配置过程:
1.得到特定名称的logger
2.加载配置文件       (配置文件做了2-5的工作)
3.logger输出有级别的日志信息

文件配置程序:
1.Logger logger = Logger.getLogger(Test.class.getName())      //取得logger
2.使用下面的配置加载
3.输出信息


文件配置分properties,xml
读取properties:
PropertyConfigurator.configure("logTest.properties");

读取xml:
DOMConfigurator.configure("src/logTest.xml");

---------------------------

一、常用输出格式

%c   列出logger名字空间的全称,如加上{<层数>}表示出从最内层算起的指定层数的名字空间
%X 按MDC(Mapped Diagnostic Context,线程映射表)输出日志。通常用于多个客户端连接同一台服务器,方便服务器区分是那个客户端访问留下来的日志。
%p 日志信息级别
%d   %d{<日期格式>}:日志信息产生时间,使用ISO8601定义的日期格式
%C   日志信息所在地(全限类名)
%m   产生的日志具体信息
%n    输出日志信息换行
%F 显示调用logger的源文件名
%l     输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
%L    显示调用logger的代码行
%M   显示调用logger的方法名
%r     显示从程序启动时到记录该条日志时已经经过的毫秒数
%t     输出产生该日志事件的线程名
%% 显示一个
二、log4j.properties

#控制包中日志输出级别
log4j.logger.org.apache.struts = debug

# 应用于控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n

#应用于文件
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=file.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n
# Use this layout for LogFactor 5 analysis

# 应用于文件回滚
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold=ERROR
log4j.appender.ROLLING_FILE.File=rolling.log
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.MaxFileSize=100KB
log4j.appender.ROLLING_FILE.MaxBackupIndex=10
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n


#应用于socket
log4j.appender.SOCKET=org.apache.log4j.net.SocketAppender
log4j.appender.SOCKET.RemoteHost=localhost
log4j.appender.SOCKET.Port=5001
log4j.appender.SOCKET.LocationInfo=true
# Set up for Log Facter 5
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n


# Log Factor 5 Appender
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000

# 发送日志给邮件
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.From=web@www.wuset.com
log4j.appender.MAIL.SMTPHost=www.wusetu.com
log4j.appender.MAIL.Subject=Log4J Message
log4j.appender.MAIL.To=web@www.wusetu.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n

# 用于数据库
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n

#每日回滚日志文件
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=SampleMessages.log4j
log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout

#自定义Appender
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.recipient = corlin@cybercorlin.net
log4j.appender.im.layout=org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern =[framework] %d - %-4r [%t] %-5p %c %x - %m%n

 

 

 

posted @ 2010-01-12 17:23  9421  阅读(2111)  评论(0编辑  收藏  举报