一、Log4j在Tomcat中的配置说明(tomcat6)

学习Java中,从简单的开始.如果需要文中提到的文件可以找我要.

http://www.apache.org/dist/tomcat/tomcat-6/v6.0.29/bin/extras/tomcat-juli-adapters.jar

http://www.apache.org/dist/tomcat/tomcat-6/v6.0.29/bin/extras/tomcat-juli.jar

其中v6.0.29为tomcat的版本号,请根据具体版本进行修改后下载,以保证最后正常效果。

接下去再保证已经有log4j的情况下。

按照如下目录结构来放置:

######################################################################

tomcat6-------lib

|       |--------tomcat-juli-adapters.jar

|       |--------log4j.jar

|       |--------log4j.properties

|

|----bin

|--------tomcat-juli.jar

|---------webapps

|-----xxx\WEB-INF

|---classes

|----log4j.properties

######################################################################

最后把log4j.properties里的配置写好就可以了。

如:

######################################################################

# 设定logger的root level为INFO,指定的输出目的地(appender)为file,并在控制台输出stdout(Console)

log4j.rootLogger=INFO, file , stdout

# 设定stdout控制台

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %5p %c{2} \"%m\"%n

# 设定输出位置,此处设定tomcat目录的logs下,文件名为projectLogs.log。

log4j.appender.file=org.apache.log4j.RollingFileAppender

log4j.appender.file.File=${catalina.home}/logs/projectLogs.log

log4j.appender.file.MaxFileSize=1024KB

# 设定制定的file使用的PatternLayout.

# 有关ConversionPattern中的转意字符的含义参考说明

log4j.appender.file.layout=org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern=%d{HH:mm:ss} %-5p [%C] (%F:%L) - %m%n

######################################################################

二、Apache Log4j配置说明
 
1.Log4j简介
Log4j是Apache的一个开源项目,它允许开发者以任意间隔输出日志信息。Log4j主要由三大类组件构成:
1)Logger-负责输出日志信息,并能够对日志信息进行分类筛选,即决定哪些日志信息应该被输出,哪些该被忽略。Loggers组件输出日志信息时分为5个级别:DEBUG、INFO、WARN、ERROR、FATAL。这五个级别的顺序是:DEBUG<INFO<WARN<ERROR<FATAL。如果设置某个Logger组件的级别是P,则只有级别比P高的日志信息才能输出。Logger是有继承关系的,最上层是rootLogger,定义的其他Logger都会继承rootLogger。
 
2)Appender-定义了日志输出目的地,指定日志信息应该被输出到什么地方。输出的目的地可以是控制台、文件或网络设备。
 
3)Layout-通过在Appender的后面附加Layout来实现格式化输出。
一个Logger可以有多个Appender,每个Appender对应一个Layout。
2.Loggers
Logger的定义格式:log4j.[loggername]=[level],appenderName,appenderName,…
这里level是指Logger的优先级,appenderName是日志信息的输出地,可以同时定义多个输出地。
3.Appenders
Appender的定义格式:
log4j.appender.appenderName = fully.qualified.name.of.appender.class  
// "fully.qualified.name.of.appender.class" 可以指定下面五个目的地中的一个:
Appender类及其作用列表
Appender类名
作 用
org.apache.log4j.ConsoleAppender
将日志输出到控制台
org.apache.log4j.FileAppender
将日志输出到文件
org.apache.log4j.DailyRollingFileAppender
每天产生一个日志文件
org.apache.log4j.RollingFileAppender
文件大小到达指定尺寸时产生一个新的文件
org.apache.log4j. WriterAppender
将日志信息以流格式发送到任意指定的地方
 
1)ConsoleAppender选项
-Threshold=WARN:指定日志消息的输出最低层次。
-ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
-Target=System.err:默认情况下是:System.out,指定输出控制台。
 
2)FileAppender 选项
-Threshold=WARN:指定日志消息的输出最低层次。
-ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
-File=mylog.txt:指定消息输出到mylog.txt文件。
- Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
 
3)DailyRollingFileAppender 选项
-Threshold=WARN:指定日志消息的输出最低层次。
-ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
-File=mylog.txt:指定消息输出到mylog.txt文件。
-Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
-DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
'.'yyyy-MM: 每月
'.'yyyy-ww: 每周 
'.'yyyy-MM-dd: 每天
'.'yyyy-MM-dd-a: 每天两次
'.'yyyy-MM-dd-HH: 每小时
'.'yyyy-MM-dd-HH-mm: 每分钟
 
4)RollingFileAppender 选项
-Threshold=WARN:指定日志消息的输出最低层次。
-ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
-File=mylog.txt:指定消息输出到mylog.txt文件。
- Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
-MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
-MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
4.Layouts
Layout的定义格式:
部分一log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
              //"fully.qualified.name.of.layout.class" 可以指定下面4个格式中的一个:
Layout类及其作用列表
Layout类名
作 用
org.apache.log4j.HTMLLayout
以HTML表格形式布局
org.apache.log4j.PatternLayout
可以灵活地指定布局模式
org.apache.log4j.SimpleLayout
包含日志信息的级别和信息字符串
org.apache.log4j.TTCCLayout
包含日志产生的时间、线程、类别等等信息
 
1)HTMLLayout 选项
-LocationInfo=true:默认值是false,输出java文件名称和行号。
-Title=my app file: 默认值是 Log4J Log Messages。
 
2)PatternLayout 选项
- ConversionPattern=%m%n :指定怎样格式化指定的消息。
 
3)XMLLayout  选项
-LocationInfo=true:默认值是false,输出java文件和行号。
 
部分二 log4j.appender.A1.layout.ConversionPattern=
%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
这里需要说明的就是日志信息格式中几个符号所代表的含义:
1)-X号: X信息输出时左对齐。
2)%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL。
3)%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921。
4)%r: 输出自应用启动到输出该log信息耗费的毫秒数。
5)%c: 输出日志信息所属的类目,通常就是所在类的全名。
6)%t: 输出产生该日志事件的线程名。
7)%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)。
8)%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
9)%%: 输出一个"%"字符。
10)%F: 输出日志消息产生时所在的文件名称。
11) %L: 输出代码中的行号。
12)%m: 输出代码中指定的消息,产生的日志具体信息。
13)%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字符,就从左边交远销出的字符截掉。
5.Apache Log介绍集
 

一、 实现分模块,输出到不同的日志文件,  以下是log4j.properties的实现

[java] view plaincopy

 
  1. log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
  2. log4j.appender.file.file=src\\log\\all.log
  3. log4j.appender.file.DatePattern='.'yyyy-MM-dd
  4. log4j.appender.file.layout=org.apache.log4j.PatternLayout
  5. log4j.appender.file.layout.ConversionPattern=[%-5p]   %d{yyyy-MM-dd   HH:mm:ss,SSS}  method:%l%n%m%n
  6. log4j.rootLogger=debug,file
  7. log4j.appender.usermanagerfile=org.apache.log4j.DailyRollingFileAppender
  8. log4j.appender.usermanagerfile.file=src\\log\\usermanager.log
  9. log4j.appender.usermanagerfile.DatePattern='.'yyyy-MM-dd
  10. log4j.appender.usermanagerfile.layout=org.apache.log4j.PatternLayout
  11. log4j.appender.usermanagerfile.layout.ConversionPattern=[%-5p]   %d{yyyy-MM-dd   HH:mm:ss,SSS}   method:%l%n%m%n
  12. log4j.logger.userManager   =   info,   usermanagerfile

调试方法:

[java] view plaincopy

 
  1. public   static   void   main(String[]   args)throws   Exception   {
  2. Log   logger   =   LogFactory.getLog("file");
  3. Log   logger   =   LogFactory.getLog("usermanager");
  4. }

二、log4j日志分级别输出到不同文件
配置文件

[java] view plaincopy

 
  1. #log4j.rootLogger=info,stdoutdebug,error
  2. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  3. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  4. log4j.appender.stdout.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
  5. log4j.logger.info=info
  6. log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
  7. log4j.appender.info.layout=org.apache.log4j.PatternLayout
  8. log4j.appender.info.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
  9. log4j.appender.info.datePattern='.'yyyy-MM-dd
  10. log4j.appender.info.Threshold = INFO
  11. log4j.appender.info.append=true
  12. log4j.appender.info.File=${catalina.home}/logs/log4j/info.log
  13. log4j.logger.debug=debug
  14. log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
  15. log4j.appender.debug.layout=org.apache.log4j.PatternLayout
  16. log4j.appender.debug.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
  17. log4j.appender.debug.datePattern='.'yyyy-MM-dd
  18. log4j.appender.debug.Threshold = DEBUG
  19. log4j.appender.debug.append=true
  20. log4j.appender.debug.File=${catalina.home}/logs/log4j/debug.log
  21. log4j.logger.warn=warn
  22. log4j.appender.warn=org.apache.log4j.DailyRollingFileAppender
  23. log4j.appender.warn.layout=org.apache.log4j.PatternLayout
  24. log4j.appender.warn.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
  25. log4j.appender.warn.datePattern='.'yyyy-MM-dd
  26. log4j.appender.warn.Threshold = DEBUG
  27. log4j.appender.warn.append=true
  28. log4j.appender.warn.File=${catalina.home}/logs/log4j/warn.log
  29. log4j.logger.error=error
  30. log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
  31. log4j.appender.error.layout=org.apache.log4j.PatternLayout
  32. log4j.appender.error.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
  33. log4j.appender.error.datePattern='.'yyyy-MM-dd
  34. log4j.appender.error.Threshold = ERROR
  35. log4j.appender.error.append=true
  36. log4j.appender.error.File=$${catalina.home}/logs/log4j/error.log

ConversionPattern设置输出格式的参数说明:

%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,

%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2011年08月30日 15:00:00,921

%r: 输出自应用启动到输出该log信息耗费的毫秒数

%c: 输出日志信息所属的类目,通常就是所在类的全名

%t: 输出产生该日志事件的线程名

%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像Javaservlets这样的多客户多线程的应用中。

%%: 输出一个”%”字符 %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字符,就从左边交远销出的字符截掉。

三、log4j日志级别介绍

log4j把日志分为ALL、TRACE&(跟踪)、DEBUG(调试)、INFO(信息)、WARNING(警告)、ERROR(错误)、FITAL(致命)、OFF等几个级别,级别依次升高。级别高的Level会屏蔽级别低的信息。

注意:

在程序中使用Log4j之前,首先要将commons-logging.jar和logging-log4j-1.2.9.jar导入到classpath中,并将log4j.properties放于src根目录中。

tomcat 日志(2)的更多相关文章

  1. CentOS7之按时间段截取指定的Tomcat日志到指定文件的方法

    CentOS7之按时间段截取指定的Tomcat日志到指定文件的方法 sed -n '/2016-11-02 15:00:/,/2016-11-02 15:05:/p' catalina.out > ...

  2. Tomcat 日志清除(含扩展AccessLogValve)

    1.tomcat的访问日志AccessLogs定期或者定量删除 a 开启tomcat访问日志 编辑${catalina}/conf/server.xml文件.注:${catalina}是tomcat的 ...

  3. 自定义日志阅读器——包括了一个load取Tomcat日志的分析器

    最近在写往公司产品里添加Tomcat适配器,以支持Tomcat.有一些功能需要摘取到Tomcat的部分日志.没有合适的工具,也不想去网上找了,就自己写了一个. 简单的画了一下设计方案: 下面直接上代码 ...

  4. linux下重启tomcat,日志查看

    版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源. 一:关闭tomcat 1.使用cd命令以及常用的tab补全命令进入到tomcat bin所在的目录(可以不用到此目录也行,楼主 ...

  5. logstash配合filebeat监控tomcat日志

    环境:logstash版本:5.0.1&&filebeat 5.0.1 ABC为三台服务器.保证彼此tcp能够相互连接. Index服务器A - 接收BC两台服务器的tomcat日志 ...

  6. Tomcat日志问题

    [Tomcat日志设定][tomcat控制台日志][log4j日志] 1 Tomcat 日志概述 Tomcat 日志信息分 为 两 类 : 一是运行中的日志,它主要 记录 运行的一些信息,尤其是一些异 ...

  7. windows下 定时删除tomcat日志和缓存。可以保留天数

    forfiles /p "e:\Program Files\Tomcat 7.0\logs" /s /m *.log /d -5 /c "cmd /c del @path ...

  8. 更改 Tomcat 日志路径

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  9. Linux系统下分割tomcat日志

    在Linux系统下,tomcat日志catalina.out并不会像window系统下,按日期进行重写备份,因此在Linux系统下会造成日志文件过大的情况,本文介绍采用 cronolog工具进行如在w ...

  10. logrotate 清理tomcat日志

    rsyslog tomcat 服务器: 192.168.32.215 input(type="imfile" File="/usr/local/apache-tomcat ...

随机推荐

  1. Java中获取刚插入数据库中的数据Id(主键,自动增长)

    public int insert(String cName, String ebrand, String cGender) { String sql = "insert into Clot ...

  2. 比较两个文件的异同Python3 标准库difflib 实现

    比较两个文件的异同Python3 标准库difflib 实现 对于要比较两个文件特别是配置文件的差异,这种需求很常见,如果用眼睛看,真是眼睛疼. 可以使用linux命令行工具diff a_file b ...

  3. 懒要懒到底,能自动的就不要手动,Hibernate正向工程完成Oracle数据库到MySql数据库转换(含字段转换、注释)

    需求描述 需求是这样的:因为我们目前的一个老项目是Oracle数据库的,这个库呢,数据库是没有注释的,而且字段名和表名都是大写风格,比如 在代码层面的po呢,以前也是没有任何注释的,但是经过这些年,大 ...

  4. 关于vue使用的一些小经验

    这一年来说,vue的势头很猛,用户量“噌”“噌”“噌”的涨 为了不掉队不落伍.在后台大哥的胁迫下,不得不选择用了它 刚开始很难接受vue的写法,在编辑器里很容易报错,基本上每行都会出现红色的波浪线 这 ...

  5. Kafka源码研究--Comsumer获取partition下标

    背景 由于项目上Flink在设置parallel多于1的情况下,job没法正确地获取watermark,所以周末来研究一下一部分,大概已经锁定了原因: 虽然我们的topic只设置了1的partitio ...

  6. Leetcode(6)Z字形变换

    Leetcode(6)Z字形变换 [题目表述]: 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" ...

  7. Swagger Learing - Spring Boot 整合swagger

    学习了一下swagger. 这是编写的Demo 源码 https://github.com/AmberBar/Learning/tree/master/swagger-learning/swagger ...

  8. Javascript对this对象的理解

    在JavaScript中this表示函数运行的时候自动生成的一个内部对象,只能在函数内部使用,下面是一个简单的例子: function test(){ alert(this == window); } ...

  9. MyBatis(3)-- Mapper映射器

    一.select元素 1.select元素的应用 id为Mapper的全限定名,联合称为一个唯一的标识 paremeterType标识这条SQL接收的参数类型 resultType标识这条SQL返回的 ...

  10. Java基础(38)AbstractMap类

    AbstractMap类的子类有HashMap(其子类是LinkedHashMap).TreeMap.EnumMap.WeakHashMap和IdentityHashMap. 1.HashMap (1 ...