Log4j使用日志

Log4j快速使用

1.工程目录:

 在src下Log4j.proerties配置文件会自动读取

2.log4jExample.java

package log4jTest;
import org.apache.log4j.Logger;

public class Log4jExample {
	static Logger log = Logger.getLogger(Log4jExample.class.getName());
	public static void main(String[] args){
		log.debug("Hello!!!");
	}
}

3.log4j.properties配置

log4j.rootLogger = debug,a1,a2 //最低级别,两个appender对象
# console
log4j.appender.a1 = org.apache.log4j.ConsoleAppender   //输出源控制台
log4j.appender.a1.Target = System.out
log4j.appender.a1.layout = org.apache.log4j.PatternLayout  //输出格式
log4j.appender.a1.layout.ConversionPattern = [%-5p]%d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n 

#file
log4j.appender.a2 = org.apache.log4j.DailyRollingFileAppender //输出源文件夹
log4j.appender.a2.File = logs/log4j.log
log4j.appender.a2.Append = true          //输出
log4j.appender.a2.Threshold = DEBUG  //阈值,debug以上输出
log4j.appender.a2.layout = org.apache.log4j.PatternLayout
log4j.appender.a2.layout.ConversionPattern = %-d{yyyy-MM-mm HH:mm:ss} [%t:%r] - [%p] %m%n

4.结果:在console下输出:*****(省略)*****hello!!!同时会在log文件下新建log4j.log文件,文件内输出:2017-01-33 11:33:55 [main:0] - [DEBUG] Hello!!!

5.重点在于配置文件

logger可输出级别:
ALL所有级别,包括定制级别。
DEBUG指明细致的事件信息,对调试应用最有用。
ERROR指明错误事件,但应用可能还能继续运行。
FATAL指明非常严重的错误事件,可能会导致应用终止执行。
INFO指明描述信息,从粗粒度上描述了应用运行过程。
OFF最高级别,用于关闭日志。
TRACE比 DEBUG 级别的粒度更细。
WARN指明潜在的有害状况。
ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF
1.配置最低级别,并声明appender对象
      2.分别设置appender对象的属性值

6.日志格式

所有  Layout  对象从  Appender  对象那里接收一个  LoggingEvent  对象,然后从  LoggingEvent  对象那里获取信息,并使用恰当的  ObjectRenderer  对象获取该信息的字符串形式。

7.xml配置log4j

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE Log4j:configuration SYSTEM "Log4j.dtd">
<Log4j:configuration>

<appender name="FILE" class="org.apache.Log4j.FileAppender">

   <param name="file" value="${log}/log.out"/>
   <param name="immediateFlush" value="true"/>
   <param name="threshold" value="debug"/>
   <param name="append" value="false"/>

   <layout class="org.apache.Log4j.PatternLayout">
      <param name="conversionPattern" value="%m%n"/>
   </layout>
</appender>

<logger name="Log4j.rootLogger" additivity="false">
   <level value="DEBUG"/>
   <appender-ref ref="FILE"/>
</logger>

</Log4j:configuration>


8.扩展

org.apache.Log4j.RollingFileAppender:
maxFileSize 这是文件大小的关键值,大于该值时,文件会回滚。该值默认为 10 MB。
maxBackupIndex 该值表示备份文件的个数,默认为 1。
每个日志文件最大为 10 MB,maxBackupIndex=2,如果超过该最大值,则会生成一个新的日志文件。由于 maxBackupIndex 的值为 2,当第二个文件的大小超过最大值时,会擦去第一个日志文件的内容,所有的日志都回滚至第一个日志文件。

 org.apache.Log4j.DailyRollingFileAppender:
DatePattern 该属性表明什么时间回滚文件,以及文件的命名约定。缺省情况下,在每天午夜回滚文件。
DatePattern 描述
'.' yyyy-MM 在本月末,下月初回滚文件。
'.' yyyy-MM-dd 在每天午夜回滚文件,这是缺省值。
'.' yyyy-MM-dd-a 在每天中午和午夜回滚文件。
'.' yyyy-MM-dd-HH 在每个整点回滚文件。
'.' yyyy-MM-dd-HH-mm 每分钟回滚文件。
'.' yyyy-ww 根据地域,在每周的第一天回滚。
org.apache.Log4j.jdbc.JDBCAppender:
属性 描述
bufferSize 设置缓冲区大小,缺省为 1。
driver 以字符串形式设置驱动类,如果未设置,缺省为 sun.jdbc.odbc.JdbcOdbcDriver
layout 设置 layout,缺省为 org.apache.Log4j.PatternLayout
password 设置数据库密码。
sql 设置每次日志事件触发时需要执行的 SQL 语句,该语句可以是 INSERT、UPDATE 或 DELETE。
URL 设置 JDBC URL.
user 设置数据库用户名。
建表
CREATE TABLE LOGS
   (USER_ID VARCHAR(20)    NOT NULL,
    DATED   DATE           NOT NULL,
    LOGGER  VARCHAR(50)    NOT NULL,
    LEVEL   VARCHAR(10)    NOT NULL,
    MESSAGE VARCHAR(1000)  NOT NULL
   );
Log4j.appender.DB.sql=INSERT INTO LOGS VALUES('%x','%d','%C','%p','%m')
USER_ID | DATED      | LOGGER       | LEVEL | MESSAGE |
+---------+------------+--------------+-------+---------+
|         | 2010-05-13 | Log4jExample | DEBUG | Debug   |
这里 x 用来输出和生成日志事件线程相关联的嵌套诊断上下文(NDC),我们使用 NDC 在处理多个客户端的服务器端来区分客户端,具体请查阅 Log4j 手册。


转换字符 含义
c 使用它为输出的日志事件分类,比如对于分类 "a.b.c",模式 %c{2} 会输出 "b.c" 。
C 使用它输出发起记录日志请求的类的全名。比如对于类 "org.apache.xyz.SomeClass",模式 %C{1} 会输出 "SomeClass"。
d 使用它输出记录日志的日期,比如 %d{HH:mm:ss,SSS} 或 %d{dd MMM yyyy HH:mm:ss,SSS}。
F 在记录日志时,使用它输出文件名。
l 用它输出生成日志的调用者的地域信息。
L 使用它输出发起日志请求的行号。
m 使用它输出和日志事件关联的,由应用提供的信息。
M 使用它输出发起日志请求的方法名。
n 输出平台相关的换行符。
p 输出日志事件的优先级。
r 使用它输出从构建布局到生成日志事件所花费的时间,以毫秒为单位。
t 输出生成日志事件的线程名。
x 输出和生成日志事件线程相关的 NDC (嵌套诊断上下文)。
X 该字符后跟 MDC 键,比如 X{clientIP} 会输出保存在 MDC 中键 clientIP 对应的值。
% 百分号, %% 会输出一个 %。
格式修饰符 左对齐 最小宽度 最大宽度 注释
%20c 20 如果列名少于 20 个字符,左边使用空格补齐。
%-20c 20 如果列名少于 20 个字符,右边使用空格补齐。
%.30c 不适用 30 如果列名长于 30 个字符,从开头剪除。
%20.30c 20 30 如果列名少于 20 个字符,左边使用空格补齐,如果列名长于 30 个字符,从开头剪除。
%-20.30c 20 30 如果列名少于 20 个字符,右边使用空格补齐,如果列名长于 30 个字符,从开头剪除。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值