web.xml中配置启动log4j的配置
   <!-- webAppRootKey进行配置,这里主要是让log能将日志写到对应项目根目录下 -->
<!-- 定义以后,在Web Container启动时将把ROOT的绝对路径写到系统变量里。
然后log4j的配置文件里就可以用${webName.root }来表示Web目录的绝对路径,把log文件存放于webapp中 -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>boss.root</param-value>
</context-param>
<!-- 加载log4j -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param> <context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param> <!-- 启动log4j -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

java代码类中,log4j的应用

 public class userAction  {
//在java类中,设置该变量。
private static final Log log = LogFactory.getLog(userAction.class); public static Log getLog() {
return log;
} public String add() {
//在方法体中打印当前日志信息
log.info("你想记录的日志信息");
}
}
 
log4j.properties文件中语句的解释
 此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码,可以任意起名。等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF则不打出任何信息,如果配置为INFO这样只显示INFO, WARN, ERROR的log信息,而DEBUG信息不会被显示,具体讲解可参照第三部分定义配置文件中的logger。

 log4j.rootCategory=INFO,stdout

 此句为定义名为stdout的输出端是哪种类型,可以是
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
具体讲解可参照第三部分定义配置文件中的Appender。 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.R.File=/data/logs/nmc/txp-log 此句为定义名为stdout的输出端的layout是哪种类型,可以是
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
具体讲解可参照第三部分定义配置文件中的Layout。 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.R.layout=org.apache.log4j.PatternLayout 如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:
%m 输出代码中指定的消息;
%M 输出打印该条日志的方法名;
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL;
%r 输出自应用启动到输出该log信息耗费的毫秒数;
%c 输出所属的类目,通常就是所在类的全名;
%t 输出产生该日志事件的线程名;
%n 输出一个回车换行符,Windows平台为"rn”,Unix平台为"n”;
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2002-10-18 22:10:28,921;
%l 输出日志事件的发生位置,及在代码中的行数;
[QC]是log信息的开头,可以为任意字符,一般为项目简称。
输出的信息
[TS] DEBUG [main] AbstractBeanFactory.getBean(189) | Returning cached instance of singleton bean 'MyAutoProxy'
具体讲解可参照第三部分定义配置文件中的格式化日志信息。 log4j.appender.stdout.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss,SSS}]**[%p]**[%t]**[%c{1}:%L]:%m%n
#log4j.appender.R.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss,SSS}]**[%p]**[%t]**[%c{1}:%L]:%m%n 指定com.opensymphony.xwork2包下的所有类的等级为info
可以把com.opensymphony.xwork2改为自己项目所用的包名。 log4j.logger.com.opensymphony.xwork2=info
log4j.logger.org.springframework=info
log4j.logger.com.ibatis=info
log4j.logger.java.sql=info 它是 子Logger 是否继承 父Logger 的 输出源(appender) 的标志位。具体说,默认情况下子Logger会继承父Logger的appender,也就是说子Logger会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。
log4j.logger.DALCompenent = info, dalLogAppender
log4j.additivity.DALCompenent = false
log4j.appender.dalLogAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dalLogAppender.File=/export/home/jboss-4.2.1.GA-nmc-txp/server/default/log/nmcdal.log 默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。 log4j.appender.dalLogAppender.Append=true 指定日志消息的输出最低层次。 log4j.appender.dalLogAppender.Threshold=info
log4j.appender.dalLogAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.dalLogAppender.layout.ConversionPattern=%d - %c -%-4r [%t] %-5p %x - %m%n

log4j配置文件的属性解释

一.参数意义说明
输出级别的种类
ERROR、WARN、INFO、DEBUG
ERROR 为严重错误 主要是程序的错误
WARN 为一般警告,比如session丢失
INFO 为一般要显示的信息,比如登录登出
DEBUG 为程序的调试信息


配置日志信息输出目的地
log4j.appender.appenderName = fully.qualified.name.of.appender.class
1.org.apache.log4j.ConsoleAppender(控制台)
2.org.apache.log4j.FileAppender(文件)
3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)


配置日志信息的格式
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

控制台选项
Threshold=DEBUG:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台

FileAppender 选项
Threshold=DEBUF:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

RollingFileAppender 选项
Threshold=DEBUG:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n

日志信息格式中几个符号所代表的含义:
 -X号: X信息输出时左对齐;
 %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
 %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
 %r: 输出自应用启动到输出该log信息耗费的毫秒数
 %c: 输出日志信息所属的类目,通常就是所在类的全名
 %t: 输出产生该日志事件的线程名
 %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
 %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
 %%: 输出一个"%"字符
 %F: 输出日志消息产生时所在的文件名称
 %L: 输出代码中的行号
 %m: 输出代码中指定的消息,产生的日志具体信息
 %n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行
 可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
 1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
 2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
 3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
 4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。

最新文章

  1. 由ArcMap属性字段自增引出字段计算器使用Python的技巧
  2. TypeScript Writing .d.ts files(编写声明文件)
  3. 2016中国大学生程序设计竞赛 - 网络选拔赛 C. Magic boy Bi Luo with his excited tree
  4. NET基础(3):is 和 as 操作符
  5. bing壁纸xml地址
  6. 用CSS定义每段首行缩进2个字符 转
  7. SVM3 Soft Margin SVM
  8. 验证 Xcode 是否来自正规渠道
  9. Visual Studio Online Integrations-Sync and migration
  10. [dpdk] 读官方文档(2)
  11. Android中操作数据的集中方式---文件,SQLite,ContentProvider
  12. HDU 4856
  13. gomobile 真机 log 打出的日志跟踪
  14. VC操作ADO的基本策略
  15. GCD 多线程
  16. Eclipse 安装Activiti 插件失败解决方法
  17. Hazelcase 简介
  18. 【AllJoyn专题】基于AllJoyn和Yeelink的传感器数据上传与指令下行的研究
  19. 23种设计模式JAVA 实现目录总结
  20. windows系统下输入法图标显示设置

热门文章

  1. JavaScript基础(一)
  2. iOS 限制UITextField输入字符
  3. Android从零单排之自动跟新
  4. 界面上传文件js包【AjaxUpload.js】
  5. MongoDB小记
  6. c# 获取数组中最大数的值
  7. 《Java编程那点事儿》读书笔记(七)——多线程
  8. 深入理解Java内存模型(七)——总结
  9. java验证码-汉字验证码
  10. PostgreSQL删除表