原文地址: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)
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的相关信息:
<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".log""/>
<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".log""/>
将根据日期,为日志文件定义不同的文件名(如此处为类似BussinessLog20091201.log,BussinessLog20091202.log的文件名
5..在需要的地方调用即可
引用::参考::
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