- 浏览: 273441 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
lgh1992314:
" target="_blank" ...
spring框架学习笔记(二)——spring的ioc之Resource -
15533921258:
楼主写的真不错啊,很多人的博客只说客户端发一次请求就会生成ht ...
Servlet学习整理(四)—— ServletRequest和ServletResponse -
rc111x:
当你所有的东西都弄好之后,在项目里面启动jetty服务器后出现 ...
利用maven创建webx3项目——实现简单的留言板(六) -
rc111x:
rc111x 写道L_Griselda 写道L_Griseld ...
利用maven创建webx3项目——实现简单的留言板(六) -
rc111x:
L_Griselda 写道L_Griselda 写道你好,我想 ...
利用maven创建webx3项目——实现简单的留言板(六)
简介
在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就 是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
此外,通过Log4j其他语言接口,您可以在C、C+ +、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。而且,通 过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。
log4j的使用
Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局);这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。
综合使用这三个组件可以轻松的记录信息的类型和 级别,并可以在运行时控制日志输出的样式和位置。下面对三个组件分别进行说明:
1、 Loggers
Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度,明白这一点很重要,这里Log4j有一个规则:假设Loggers级别为P,如果在Loggers中发 生了一个级别Q比P高,则可以启动,否则屏蔽掉。
假设你定义的级别是info,那么error和warn的日志可以显示而比他低的debug信息就不显示了。
2、Appenders
禁用与使用日志请求只是Log4j其中的一个小小的地方,Log4j日志系统允许把日志输出到不同的地方,如控制台(Console)、文件(Files)、根据天数或者文件大小产生新的文件、以流的形式发送到其它地方等等。
其语法表示为:
- org.apache.log4j.ConsoleAppender(控制台)
- org.apache.log4j.FileAppender(文件)
- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
3、Layouts
有时用户希望根据自己的喜好格式化自己的日志输出。Log4j可以在Appenders的后面附加Layouts来完成这个功能。Layouts提供了四 种日志输出样式,如根据HTML样式、自由指定样式、包含日志级别与信息的样式和包含日志时间、线程、类别等信息的样式等等。
其语法表示为:
- org.apache.log4j.HTMLLayout(以HTML表格形式布局),
- org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
- org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
- org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
程序举例
1、引入log4j
在pom.xml中加入依赖:
<dependency > <groupId >log4j </groupId > <artifactId >log4j </artifactId > <version >1.2.14 </version > </dependency > <dependency > <groupId >org.slf4j </groupId > <artifactId >slf4j- api</ artifactId> <version >1.6.1 </version > </dependency > <dependency > <groupId >org.slf4j </groupId > <artifactId >slf4j-log4j12 </artifactId > <version >1.6.1 </version > </dependency > <dependency > <groupId >org.slf4j </groupId > <artifactId >slf4j- nop</ artifactId> <version >1.6.1 </version > </dependency >
2、配置web.xml和log4j.xml
1)配置web.xml,初始化日志系统
web.xml
<context-param > <param-name >log4jConfigLocation </param-name > <param-value >/WEB-INF/log4j.xml </param-value > </context-param > <listener > <listener-class >org.springframework.web.util.Log4jConfigListener </listener-class > </listener >
2)配置log4j.xml,配置输出的log格式和输出地等
log4j.xml
<?xml version="1.0" encoding= "UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" > <log4j:configuration> <!-- ========================== 自定义输出格式说明================================ --> <!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL --> <!-- %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 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10) --> <!-- ========================================================================== --> <!-- ========================== 输出方式说明================================ --> <!-- Log4j提供的appender有以下几种: --> <!-- org.apache.log4j.ConsoleAppender(控制台), --> <!-- org.apache.log4j.FileAppender(文件), --> <!-- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), --> <!-- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), --> <!-- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) --> <!-- ========================================================================== --> <!-- 输出到控制台 --> <appender name ="myConsole" class="org.apache.log4j.ConsoleAppender"> <layout class ="org.apache.log4j.PatternLayout"> <param name ="ConversionPattern" value= "[%p] %d{yyyy-mm-dd HH:mm:ss} %c :: %m%n"/> </layout > <filter class ="org.apache.log4j.varia.LevelRangeFilter"> <param name ="LevelMin" value="DEBUG"/> <param name ="LevelMax" value="ERROR"/> </filter > </appender > <!-- 输出到日志文件 --> <appender name ="myspring" class= "org.apache.log4j.RollingFileAppender" > <param name ="File" value="F:/icod/myspring/output/mylog.log"/> <param name ="Append" value="true"/> <layout class ="org.apache.log4j.PatternLayout"> <param name ="ConversionPattern" value= "[%p] %d{yyyy-mm-dd HH:mm:ss} %c :: %m%n"/> </layout > </appender > <!--通过<category></category>的定义可以将各个包中的类日志输出到不同的日志文件中--> <category name ="com.myspring.app"> <level value ="debug" /> <appender-ref ref ="myspring" /> </category > <!-- 指定logger的设置,additivity指示是否遵循缺省的继承机制--> <logger name ="myspringlogger" additivity="false"> <level value ="debug" /> <appender-ref ref ="myspring" /> </logger > <!-- 根logger的设置--> <root > <level value ="debug" /> <appender-ref ref ="myConsole"/> </root > </log4j:configuration>
这里定义了控制台输出myConsole和文件输出mySpring
具体的使用这里就不多说了,直接引用log4j的类就可以了。
发表评论
-
接口的幂等性
2018-06-07 16:04 0接口的幂等性 -
java中的java.util.Map接口及其实现
2013-11-18 18:04 3912java为数据结构中的映 ... -
java中class.forName()的含义和作用
2013-11-07 10:38 1396含义 Class.forName ... -
java作业调度、定时任务实践
2013-05-26 16:13 9099最近项目中用到了定时任务,以前没有接触过,在此对java中 ... -
java内存溢出和内存泄露
2013-04-07 15:29 22598虽然jvm可以通过GC自动回收无用的内存,但是代码不 ... -
JDK和JRE、paht和classpath
2013-03-24 16:38 1824学习java这么久了,突然发现自己对JDK和JRE还没有一 ... -
对java IO流的理解
2013-04-07 15:37 701、java中的“流” 为什么要先讨论“流”呢,因 ... -
Java的JAR包, EAR包 ,WAR包内部结构
2012-12-08 21:53 6084JAR包 JAR 文件格式以流行的 ZIP 文件格式为基础; ... -
正则表达式
2012-02-26 22:29 1082一、基本概念 正则表达式: “ ... -
【转】手工构建JAVA工程之java打包血泪史
2012-02-02 09:56 1053今天打算学习下工程构建工具ant,看的书是《零基础学J ... -
Java 异常处理
2011-11-25 14:25 1132Java 异常处理引出 ... -
Properties
2011-11-18 09:43 0类Properties extends Hashtab ... -
【转】java Reference
2011-12-12 17:49 1015Java基本功——ReferenceReferen ... -
字符集和字符编码(Charset & Encoding)
2011-11-18 09:35 10501.基础知识 计算机中储 ... -
session和cookie
2011-11-14 21:19 1074cookie ... -
解耦与序列化、持久化【转】
2011-11-09 18:43 1383http://kongtong2004.blog.163.co ... -
Data和DataFormat
2011-11-14 21:19 123711)System.currentTimeMillis ... -
abstract class和interface的区别【转】
2011-11-08 15:24 1290abstract class和interfa ... -
finally深入了解
2011-11-08 15:20 1044以前只知道不管 try 语句块正常结束还是异常 ... -
【转】final
2011-11-08 15:12 1019final是指这个变量不 ...
相关推荐
### 四、logging-log4j-1.2.13版本 `logging-log4j-1.2.13`是Log4j的一个特定版本,发布于2007年。这个版本包含了Log4j的主要功能,但请注意,该版本相对较旧,可能存在安全漏洞或已知问题。在实际项目中,建议使用...
本文将详细介绍如何解决 JBOSS 和 Log4j 的冲突,配置 Log4j,及 Log4j 的基本使用方法。 解决 JBOSS 和 Log4j 冲突的配置 为了解决 JBOSS 和 Log4j 的冲突,需要在 JBOSS 服务器中进行以下配置: 1. 配置 $JBOSS...
举例来说,一个简单的`log4j2.xml`配置文件可能如下所示: ```xml [%t] %-5level %logger{36} - %msg%n" /> ``` 这个配置会将日志输出到控制台,日志格式为时间戳、线程、级别、logger名和消息。 ...
比如,在某一项目开始时使用的是“log4j”框架,后面经过研究发现“sf4j”框架功能更强大,想切换到“sf4j”。常规的做法是,修改项目中每一处调用到“log4j”相关模块的代码。如果是项目比较大,所要花费的工作量...
本文将详细介绍如何在Node.js项目中使用Log4js的4.x版本记录日志。 首先,需要安装log4js库。可以通过npm包管理器来安装它,使用命令: ```bash npm install log4js ``` 安装完成后,我们就可以在代码中引入log4...
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ``` 以上是SSM框架整合的基本步骤和配置,具体实施时还需要根据...
举例来说,一个简单的Log4j配置可能如下: ```xml <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> ...
8. **日志记录**:为了调试和监控程序运行,通常会集成日志框架,如Log4j或SLF4J,记录发送短信的详细过程,包括请求、响应和异常信息。 9. **测试与调试**:开发完成后,需要进行单元测试和集成测试,确保短信发送...
6. **显示指定时间以后的日志**:使用`awk`根据时间字段($4)筛选日志。例如,`cat access_log | awk '$4 > "23/Jul/2012:01:00:01"'`将显示指定时间之后的日志。 7. **找出访问量最大的IP并封禁**:先用`awk`、`...
J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成 sp...
6. **slf4j-api.jar** 和 **slf4j-log4j12.jar**:用于日志记录的标准接口及其实现。 7. **hibernate-core.jar**:Hibernate核心库。 8. **log4j.jar**:日志记录框架。 9. **javassist.jar**:代码生成工具,被...
常见的时间复杂度有O(1)、O(log n)、O(n)、O(n log n)、O(n^2)、O(2^n)等。 二、排序算法的稳定性 排序算法的稳定性是指在排序过程中,关键码相同的记录排序前后相对位置不发生改变。常见的稳定排序算法有插入排序...
除此之外,还需要数据库驱动包(如mysql-connector-java)以及其他的辅助库,如log4j用于日志记录。 总之,SSH框架的整合能帮助开发者高效地构建复杂的企业级应用,提供了一种层次清晰、职责分明的架构模式。理解并...
若要将其改为DEBUG,可以在`log4j.properties`中添加`log4j.logger.org.apache.hadoop.hdfs.server.datanode.DataNode=DEBUG`,然后重启服务使更改生效。 总的来说,Hadoop的源码编译和日志调试是开发者深入理解...
通过主定理,我们可以分析如斐波那契数列的递推关系 `f[n+1] = (f[n] + f[n-1])/2`,虽然这不是典型的时间复杂度问题,但同样可以使用类似的思路分析其增长趋势。随着 `i` 的增大,`f[i]` 接近于 `(√5 - 1)/2`,这...
在本文中,我们将使用Python语言来实现熵权法,并对其进行详细的解释。 熵权法的原理 熵权法是一种基于熵值的指标权重计算方法。熵值是衡量随机变量不确定性的度量,熵值越高,表示随机变量的不确定性越高。熵权法...
以下是一些常用的iperf3参数及其使用举例: ### 通用参数 - `-v`:显示版本信息。 - `-p`:指定服务器端监听的端口号。 - `-f`:指定带宽输出的格式,例如Kbits、Mbits等。 - `-i`:设置监控报告的时间间隔。 - `-J`...
通过设置log4j的日志级别,可以查看Hibernate生成的SQL,以了解其运行情况。开启hibernate.generate.statistics可获取统计信息,帮助分析实体、集合、会话和二级缓存的行为。 此外,文章还提到了监控SQL生成以揭示...