- 浏览: 144739 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
abc08010051:
请问楼主:既然hashmap是用数组存放Entry,为什么还在 ...
java hashSet与hashMap -
adam_zs:
没看懂哦
Java-----装饰模式 -
hekai1990:
受教了...
java date和hibernate date -
jarorwar:
...
Spring中Bean的初始化过程 -
tyut8518:
探究的相当深啊 得循序渐进来了
java hashSet与hashMap
引子:
最近老是用到log4j的东西,我想这样优秀的一个日志工具大家都比我熟悉,想必都已经领略了它的强大。大家也知道log4j都是和common-logging一起运用的。今天我自己把log4j的东西做个总结吧,就是算是复习,当然,要说log4j,就不的不从common-logging说起了。
common-logging组件:
Jakarta Commons Logging (JCL)提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具体的日志实现工具。它提供给中间件/日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具。了解包里情况,可以查看它的API文档:http://www.oschina.net/uploads/doc/commons-logging-1.1.1/index.html
其中Log(基本记录器)和LogFactory(负责创建Log实例)是两个基类。该API直接提供对下列底层日志记录工具的支持:Jdk14Logger,Log4JLogger,LogKitLogger,NoOpLogger (直接丢弃所有日志信息),还有一个SimpleLog。
有必要详细说明一下调用LogFactory.getLog()时发生的事情。调用该函数会启动一个发现过程,即找出必需的底层日志记录功能的实现,具体的发现过程在下面列出:
以下主要学习log4j
一、 Log4j的架构
Log4j系统的三大板块:日志写入器、日志输出终端、日志布局模式。
Logger类是日志包的核心,Logger的名称是大小写敏感的,并且名称之间有继承关系。子名由父名做前缀,用点号“.”分隔,如x.y是x.y.z的父亲Logger。
Logger系统中有个根logger,是所有logger的祖先,它总是存在的,并且不可以通过名字获取,可以通过Logger.getRootLogger()来获取。获取Logger对象的方法很多,可以参考API文档,在某对象中,用该对象所属的类作为参数,调用Logger.getLogger(Class clazz)以获取logger对象被认为是目前所知最理智的命名logger方法。
二、 Log4j的日志级别(Level)
每个logger都有一个日志级别,用来控制日志的输出。未分配级别的logger将自动继承它最近的父logger的日志级别。Logger的由低到高级别如下:
ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF
三、 Log4j的输出终端(Appender接口)
Log4j提供了以下几个实现:
默认情况下,子logger将继承父logger的所有appenders。
四、 Log4j的输出布局模式(Layout接口)
Log4j提供Layout有以下几种:
Log4j采用类似C语言中的printf函数的打印格式格式化日志信息。打印参数如下:
五、 Log4j的配置
在实际使用中,Log4j一般是通过配置文件配置使用的。配置文件有两种,Java properties和XML文件。一般都选用properties文件来配置,因为简洁易读。下面只介绍Java properties的配置方式。
对Log4j的配置就是对rootLogger和子Logger的配置。主要的配置项为:rootLogger、输出终端、输出布局模式,所有的配置项都必须以log4j开头。
配置文件的示例
最近老是用到log4j的东西,我想这样优秀的一个日志工具大家都比我熟悉,想必都已经领略了它的强大。大家也知道log4j都是和common-logging一起运用的。今天我自己把log4j的东西做个总结吧,就是算是复习,当然,要说log4j,就不的不从common-logging说起了。
common-logging组件:
Jakarta Commons Logging (JCL)提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具体的日志实现工具。它提供给中间件/日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具。了解包里情况,可以查看它的API文档:http://www.oschina.net/uploads/doc/commons-logging-1.1.1/index.html
其中Log(基本记录器)和LogFactory(负责创建Log实例)是两个基类。该API直接提供对下列底层日志记录工具的支持:Jdk14Logger,Log4JLogger,LogKitLogger,NoOpLogger (直接丢弃所有日志信息),还有一个SimpleLog。
有必要详细说明一下调用LogFactory.getLog()时发生的事情。调用该函数会启动一个发现过程,即找出必需的底层日志记录功能的实现,具体的发现过程在下面列出:
⑴ Commons的Logging首先在CLASSPATH中查找commons-logging.properties文件。这个属性文件至少定义 org.apache.commons.logging.Log属性,它的值应该是上述任意Log接口实现的完整限定名称。如果找到 org.apache.commons.logging.Log属相,则使用该属相对应的日志组件。结束发现过程。
⑵ 如果上面的步骤失败(文件不存在或属相不存在),Commons的Logging接着检查系统属性 org.apache.commons.logging.Log。如果找到org.apache.commons.logging.Log系统属性,则使用该系统属性对应的日志组件。结束发现过程。
⑶ 如果找不到org.apache.commons.logging.Log系统属性,Logging接着在CLASSPATH中寻找log4j的类。如果找到了,Logging就假定应用要使用的是log4j。不过这时log4j本身的属性仍要通过log4j.properties文件正确配置。结束发现过程。
⑷ 如果上述查找均不能找到适当的Logging API,但应用程序正运行在JRE 1.4或更高版本上,则默认使用JRE 1.4的日志记录功能。结束发现过程。
⑸ 最后,如果上述操作都失败(JRE 版本也低于1.4),则应用将使用内建的SimpleLog。SimpleLog把所有日志信息直接输出到System.err。结束发现过程。
以下主要学习log4j
一、 Log4j的架构
Log4j系统的三大板块:日志写入器、日志输出终端、日志布局模式。
Logger类是日志包的核心,Logger的名称是大小写敏感的,并且名称之间有继承关系。子名由父名做前缀,用点号“.”分隔,如x.y是x.y.z的父亲Logger。
Logger系统中有个根logger,是所有logger的祖先,它总是存在的,并且不可以通过名字获取,可以通过Logger.getRootLogger()来获取。获取Logger对象的方法很多,可以参考API文档,在某对象中,用该对象所属的类作为参数,调用Logger.getLogger(Class clazz)以获取logger对象被认为是目前所知最理智的命名logger方法。
二、 Log4j的日志级别(Level)
每个logger都有一个日志级别,用来控制日志的输出。未分配级别的logger将自动继承它最近的父logger的日志级别。Logger的由低到高级别如下:
ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF
三、 Log4j的输出终端(Appender接口)
Log4j提供了以下几个实现:
org.apache.log4j.ConsoleAppender(控制台) org.apache.log4j.FileAppender(文件) org.apache.log4j.DailyRollingFileAppender(每天都产生一个日志文件) org.apache.log4j.RollingFileAppender(文件大小达到指定尺寸时产生一个新的日志文件,文件名称上会自动添加数字序号。) org.apache.log4j.WriterAppender(将日志信息以流的格式发送到任意指定的地方)
默认情况下,子logger将继承父logger的所有appenders。
四、 Log4j的输出布局模式(Layout接口)
Log4j提供Layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局) org.apache.log4j.PatternLayout(可以灵活地指定布局模式) org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串) org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)
Log4j采用类似C语言中的printf函数的打印格式格式化日志信息。打印参数如下:
%m:输出代码中指定的消息。 %p:输出优先级。 %r:输入自应用启动到输出该log信息耗费的毫秒数。 %c:输出所属的类目,通常就是所在类的全名。 %t:输出产生该日志线程的线程名。 %n:输出一个回车换行符。Windows平台为“\r\n”,UNIX为“\n”。 %d:输出日志时间点的日期或时间,默认格式为ISO8601,推荐使用“%d{ABSOLUTE}”,这个输出格式形如:“2007-05-07 18:23:23,500”,符合中国人习惯。 %l:输出日志事件发生的位置,包括类名、线程名,以及所在代码的行数。
五、 Log4j的配置
在实际使用中,Log4j一般是通过配置文件配置使用的。配置文件有两种,Java properties和XML文件。一般都选用properties文件来配置,因为简洁易读。下面只介绍Java properties的配置方式。
对Log4j的配置就是对rootLogger和子Logger的配置。主要的配置项为:rootLogger、输出终端、输出布局模式,所有的配置项都必须以log4j开头。
配置文件的示例
##Log4J的配置之简单使它遍及于越来越多的应用中了 ##Log4J配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。择其一二使用就够用了。 ##此文件(log4j.properties)内容来自网络,非本文作者liigo原创。 log4j.rootLogger = DEBUG, CONSOLE,A1 log4j.addivity.org.apache = true # 应用于控制台 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 - % c -%- 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 - % c -%- 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 = 10KB log4j.appender.ROLLING_FILE.MaxBackupIndex = 1 log4j.appender.ROLLING_FILE.layout = org.apache.log4j.PatternLayout log4j.appender.ROLLING_FILE.layout.ConversionPattern = [framework] % d - % c -%- 4r [ % t] %- 5p % c % x - % m % n #应用于socket log4j.appender.SOCKET = org.apache.log4j.RollingFileAppender 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 = FATA 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 - % c -%- 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 - %c -%-4r [%t] %-5p %c %x - %m%n ' ) log4j.appender.DATABASE.layout = org.apache.log4j.PatternLayout log4j.appender.DATABASE.layout.ConversionPattern = [framework] % d - % c -%- 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 - % c -%- 4r [ % t] %- 5p % c % x - % m % n # 结束
评论
3 楼
alex295111
2010-03-09
log4j的继承关系也很重要的
2 楼
litianyi520
2010-02-04
总结的很好
1 楼
qsfwy
2010-02-03
kantery 写道
引子:
最近老是用到log4j的东西,我想这样优秀的一个日志工具大家都比我熟悉,想必都已经领略了它的强大。大家也知道log4j都是和common-logging一起运用的。今天我自己把log4j的东西做个总结吧,就是算是复习,当然,要说log4j,就不的不从common-logging说起了。
common-logging组件:
Jakarta Commons Logging (JCL)提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具体的日志实现工具。它提供给中间件/日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具。了解包里情况,可以查看它的API文档:http://www.oschina.net/uploads/doc/commons-logging-1.1.1/index.html
其中Log(基本记录器)和LogFactory(负责创建Log实例)是两个基类。该API直接提供对下列底层日志记录工具的支持:Jdk14Logger,Log4JLogger,LogKitLogger,NoOpLogger (直接丢弃所有日志信息),还有一个SimpleLog。
有必要详细说明一下调用LogFactory.getLog()时发生的事情。调用该函数会启动一个发现过程,即找出必需的底层日志记录功能的实现,具体的发现过程在下面列出:
以下主要学习log4j
一、 Log4j的架构
Log4j系统的三大板块:日志写入器、日志输出终端、日志布局模式。
Logger类是日志包的核心,Logger的名称是大小写敏感的,并且名称之间有继承关系。子名由父名做前缀,用点号“.”分隔,如x.y是x.y.z的父亲Logger。
Logger系统中有个根logger,是所有logger的祖先,它总是存在的,并且不可以通过名字获取,可以通过Logger.getRootLogger()来获取。获取Logger对象的方法很多,可以参考API文档,在某对象中,用该对象所属的类作为参数,调用Logger.getLogger(Class clazz)以获取logger对象被认为是目前所知最理智的命名logger方法。
二、 Log4j的日志级别(Level)
每个logger都有一个日志级别,用来控制日志的输出。未分配级别的logger将自动继承它最近的父logger的日志级别。Logger的由低到高级别如下:
ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF
三、 Log4j的输出终端(Appender接口)
Log4j提供了以下几个实现:
默认情况下,子logger将继承父logger的所有appenders。
四、 Log4j的输出布局模式(Layout接口)
Log4j提供Layout有以下几种:
Log4j采用类似C语言中的printf函数的打印格式格式化日志信息。打印参数如下:
五、 Log4j的配置
在实际使用中,Log4j一般是通过配置文件配置使用的。配置文件有两种,Java properties和XML文件。一般都选用properties文件来配置,因为简洁易读。下面只介绍Java properties的配置方式。
对Log4j的配置就是对rootLogger和子Logger的配置。主要的配置项为:rootLogger、输出终端、输出布局模式,所有的配置项都必须以log4j开头。
配置文件的示例
最近老是用到log4j的东西,我想这样优秀的一个日志工具大家都比我熟悉,想必都已经领略了它的强大。大家也知道log4j都是和common-logging一起运用的。今天我自己把log4j的东西做个总结吧,就是算是复习,当然,要说log4j,就不的不从common-logging说起了。
common-logging组件:
Jakarta Commons Logging (JCL)提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具体的日志实现工具。它提供给中间件/日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具。了解包里情况,可以查看它的API文档:http://www.oschina.net/uploads/doc/commons-logging-1.1.1/index.html
其中Log(基本记录器)和LogFactory(负责创建Log实例)是两个基类。该API直接提供对下列底层日志记录工具的支持:Jdk14Logger,Log4JLogger,LogKitLogger,NoOpLogger (直接丢弃所有日志信息),还有一个SimpleLog。
有必要详细说明一下调用LogFactory.getLog()时发生的事情。调用该函数会启动一个发现过程,即找出必需的底层日志记录功能的实现,具体的发现过程在下面列出:
⑴ Commons的Logging首先在CLASSPATH中查找commons-logging.properties文件。这个属性文件至少定义 org.apache.commons.logging.Log属性,它的值应该是上述任意Log接口实现的完整限定名称。如果找到 org.apache.commons.logging.Log属相,则使用该属相对应的日志组件。结束发现过程。
⑵ 如果上面的步骤失败(文件不存在或属相不存在),Commons的Logging接着检查系统属性 org.apache.commons.logging.Log。如果找到org.apache.commons.logging.Log系统属性,则使用该系统属性对应的日志组件。结束发现过程。
⑶ 如果找不到org.apache.commons.logging.Log系统属性,Logging接着在CLASSPATH中寻找log4j的类。如果找到了,Logging就假定应用要使用的是log4j。不过这时log4j本身的属性仍要通过log4j.properties文件正确配置。结束发现过程。
⑷ 如果上述查找均不能找到适当的Logging API,但应用程序正运行在JRE 1.4或更高版本上,则默认使用JRE 1.4的日志记录功能。结束发现过程。
⑸ 最后,如果上述操作都失败(JRE 版本也低于1.4),则应用将使用内建的SimpleLog。SimpleLog把所有日志信息直接输出到System.err。结束发现过程。
以下主要学习log4j
一、 Log4j的架构
Log4j系统的三大板块:日志写入器、日志输出终端、日志布局模式。
Logger类是日志包的核心,Logger的名称是大小写敏感的,并且名称之间有继承关系。子名由父名做前缀,用点号“.”分隔,如x.y是x.y.z的父亲Logger。
Logger系统中有个根logger,是所有logger的祖先,它总是存在的,并且不可以通过名字获取,可以通过Logger.getRootLogger()来获取。获取Logger对象的方法很多,可以参考API文档,在某对象中,用该对象所属的类作为参数,调用Logger.getLogger(Class clazz)以获取logger对象被认为是目前所知最理智的命名logger方法。
二、 Log4j的日志级别(Level)
每个logger都有一个日志级别,用来控制日志的输出。未分配级别的logger将自动继承它最近的父logger的日志级别。Logger的由低到高级别如下:
ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF
三、 Log4j的输出终端(Appender接口)
Log4j提供了以下几个实现:
org.apache.log4j.ConsoleAppender(控制台) org.apache.log4j.FileAppender(文件) org.apache.log4j.DailyRollingFileAppender(每天都产生一个日志文件) org.apache.log4j.RollingFileAppender(文件大小达到指定尺寸时产生一个新的日志文件,文件名称上会自动添加数字序号。) org.apache.log4j.WriterAppender(将日志信息以流的格式发送到任意指定的地方)
默认情况下,子logger将继承父logger的所有appenders。
四、 Log4j的输出布局模式(Layout接口)
Log4j提供Layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局) org.apache.log4j.PatternLayout(可以灵活地指定布局模式) org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串) org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)
Log4j采用类似C语言中的printf函数的打印格式格式化日志信息。打印参数如下:
%m:输出代码中指定的消息。 %p:输出优先级。 %r:输入自应用启动到输出该log信息耗费的毫秒数。 %c:输出所属的类目,通常就是所在类的全名。 %t:输出产生该日志线程的线程名。 %n:输出一个回车换行符。Windows平台为“\r\n”,UNIX为“\n”。 %d:输出日志时间点的日期或时间,默认格式为ISO8601,推荐使用“%d{ABSOLUTE}”,这个输出格式形如:“2007-05-07 18:23:23,500”,符合中国人习惯。 %l:输出日志事件发生的位置,包括类名、线程名,以及所在代码的行数。
五、 Log4j的配置
在实际使用中,Log4j一般是通过配置文件配置使用的。配置文件有两种,Java properties和XML文件。一般都选用properties文件来配置,因为简洁易读。下面只介绍Java properties的配置方式。
对Log4j的配置就是对rootLogger和子Logger的配置。主要的配置项为:rootLogger、输出终端、输出布局模式,所有的配置项都必须以log4j开头。
配置文件的示例
##Log4J的配置之简单使它遍及于越来越多的应用中了 ##Log4J配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。择其一二使用就够用了。 ##此文件(log4j.properties)内容来自网络,非本文作者liigo原创。 log4j.rootLogger = DEBUG, CONSOLE,A1 log4j.addivity.org.apache = true # 应用于控制台 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 - % c -%- 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 - % c -%- 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 = 10KB log4j.appender.ROLLING_FILE.MaxBackupIndex = 1 log4j.appender.ROLLING_FILE.layout = org.apache.log4j.PatternLayout log4j.appender.ROLLING_FILE.layout.ConversionPattern = [framework] % d - % c -%- 4r [ % t] %- 5p % c % x - % m % n #应用于socket log4j.appender.SOCKET = org.apache.log4j.RollingFileAppender 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 = FATA 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 - % c -%- 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 - %c -%-4r [%t] %-5p %c %x - %m%n ' ) log4j.appender.DATABASE.layout = org.apache.log4j.PatternLayout log4j.appender.DATABASE.layout.ConversionPattern = [framework] % d - % c -%- 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 - % c -%- 4r [ % t] %- 5p % c % x - % m % n # 结束
发表评论
-
spring 学习笔记------PointCut接口
2009-04-23 23:14 1721学习spring 里的PointCut Interface接口 ... -
spring 学习笔记-----访问资源
2009-04-21 22:21 1029访问资源的核心:Resource 这是一个接口,这个接口定义了 ... -
spring 学习笔记-----PropertyEditors
2009-04-20 22:54 1514基本类型:是指Spring默认提供的7中属性编辑器的类型,而非 ... -
基于XML文件读取bean定义:XmlBeanDefinitionReader
2009-04-01 23:23 4598基于XML文件读取bean定义 除了基于Properties文 ... -
spring 源码学习笔记:XXX-Aware
2009-03-12 23:26 1506学习了package org.springframework. ... -
spring 2.5 源码学习笔记: PropertyEditorRegistrySupport
2009-03-12 16:07 2054PropertyEditorRegistrySupport 介 ... -
Spring自动绑定技术总结
2009-03-09 17:06 16341.概念介绍:这些概念 ... -
Spring中Bean的初始化过程
2009-03-03 14:08 6923在传统的Java应用中,Bean的生命周期非常简单。Java的 ... -
Aspectj 概念介绍
2009-02-20 18:13 1578Aspectj AspectJ是一个 ... -
spring入门 :一个输出日志的实例分析Java的代理机制
2009-02-20 15:00 15571.通用的日志输出方法 a. 原来在程序中编写日志时,都要在每 ... -
spring BeanWrapper设置和获取属性值实例
2009-02-20 09:33 3257考虑下面两个类: public class Company { ... -
spring Lifecycle接口
2009-02-19 11:14 54901.初始化回调 实现org.springframework.b ... -
spring如何将Http request范围的bean注入到另一个bean中
2009-02-19 10:44 3111如果你打算将一个Http re ... -
spring bean 作用域总结
2009-02-19 10:15 32921.Singleton作用域: 当一 ... -
spring IOC容器
2009-02-18 22:40 9631.Spring IoC容器的实例化方法: a.Resour ... -
关于spring bean 的总结
2009-02-18 22:30 12361.bean的别名: 在对bean ... -
Spring 中设置依赖注入
2009-02-16 12:35 2084示例代码: package org.sixsun.sp ... -
spring为ApplicationContext提供有三种实现
2009-02-16 10:49 6773spring为ApplicationContext提供 ...
相关推荐
将`Common-Log`与`log4j2`结合使用,首先需要在项目中引入`Common-Log`的接口库和`log4j2`的实现库。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml <groupId>commons-logging <artifactId>commons...
用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。当然,common-logging内部有一个Simple logger的...
4. **配置日志实现**:`common-logging`通过查找类路径中的特定文件(如`log4j.properties`或`logging.properties`)来确定使用哪个日志实现。如果没有找到,它会默认使用`java.util.logging`。如果你希望使用其他...
在实际应用中,如果`log4j.jar`和`commons-logging.jar`一起使用,通常需要确保`commons-logging`的配置指向`log4j`作为其底层实现,以充分利用`log4j`的功能和灵活性。 总结,`log4j.jar`和`commons-logging.jar`...
标题中的“日志框架学习之一:commons-logging+log4j”揭示了本文将探讨的是在Java开发中常用的两个日志处理工具——Apache Commons Logging和Log4j。这两个框架是日志记录的基础,广泛应用于各种Java应用程序,为...
本文将深入探讨`log4j.jar`和`common-logging.jar`这两个著名的Java日志库,以及它们在Java应用中的作用。 首先,`log4j.jar`是由Apache软件基金会开发的日志框架,它是Log4j项目的组成部分。Log4j是Java平台上的一...
4. **Slf4j** - 日志门面,允许用户在运行时选择不同的日志实现,如Common-Logging或Log4j,提供了统一的API进行日志记录。 5. **MySQL** - 常用的关系型数据库管理系统,用于存储应用的数据。 在搭建项目时,首先...
今天我们将聚焦两个流行的日志框架——SLF4J(Simple Logging Facade for Java)和Logback,以及它们与Log4j和Commons-Logging的对比。 SLF4J是一个接口层的日志框架,它提供一个统一的API,允许用户在运行时插入...
而common-logging则是Apache Commons的一个组件,它提供了一个统一的日志接口,允许开发者在不修改代码的情况下切换底层的日志实现,比如从Log4j切换到java.util.logging(JUL)。 **Log4j** Log4j是Java日志领域的...
* org.apache.commons.logging.impl.Log4JLogger 使用 Log4J * org.apache.commons.logging.impl.LogKitLogger 使用 avalon-Logkit * org.apache.commons.logging.impl.SimpleLog common-logging 自带日志实现类 ...
通过抽象出一个通用的日志接口,开发人员可以在运行时选择不同的日志实现,如log4j、java.util.logging或者Apache Log4j等,而无需修改代码。这使得项目具有更好的灵活性和可移植性。 在Commons Logging 1.1.1中,...
例如,如果在类路径下找到了log4j.properties或log4j.xml,那么Commons Logging就会选择log4j作为日志实现。如果找不到log4j的相关配置,那么它会回退到其他的日志实现,如JUL。 在Spring框架中,Commons Logging被...
这个库的主要目标是为Java应用程序提供一个简单、统一的接口来使用各种日志框架,如log4j、Java内置的日志API(java.util.logging)或简单的控制台输出。在本文中,我们将深入探讨Commons Logging的核心概念、主要...
Commons Logging通过提供一个抽象层,允许开发者使用简单的API来记录日志,而具体的日志实现(如Log4j、Java Util Logging或SLF4J)可以根据项目需求或者环境配置进行选择和切换。 Commons Logging的核心概念包括...
Commons Logging提供了统一的日志接口,使得开发者能够在不修改代码的情况下切换不同的日志实现,如Log4j、java.util.logging(JUL)或Apache Logkit等。这种灵活性使得项目在不同环境下的日志配置更加方便,降低了...
用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。当然,common-logging内部有一个Simple logger的...
Commons Logging (JCL)提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具体的... Because we use commons-logging you are free to choose your logging implementation (Log4j is a common choice).
**log4j-api-2.x 和 log4j-core-2.x是必须的,其他包根据需要引入, Common Logging Bridge: log4j-jcl-2.3 Log4j 2是log4j 1.x和logback的改进版,据说采用了一些新技术(无锁异步、等等),使得日志的吞吐量、性能...
`commons-logging`是一个轻量级的日志接口抽象层,它允许开发者使用不同的日志实现(如log4j、java.util.logging或JCL-over-SLF4J等)而无需修改代码。这提供了极大的灵活性,使得在不同的环境下可以方便地切换日志...