Log4j使用日志

来源:互联网 发布:海颐软件北京分公司 编辑:程序博客网 时间:2024/05/21 10:36

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对象# consolelog4j.appender.a1 = org.apache.log4j.ConsoleAppender   //输出源控制台log4j.appender.a1.Target = System.outlog4j.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 #filelog4j.appender.a2 = org.apache.log4j.DailyRollingFileAppender //输出源文件夹log4j.appender.a2.File = logs/log4j.loglog4j.appender.a2.Append = true          //输出log4j.appender.a2.Threshold = DEBUG  //阈值,debug以上输出log4j.appender.a2.layout = org.apache.log4j.PatternLayoutlog4j.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否2030如果列名少于 20 个字符,左边使用空格补齐,如果列名长于 30 个字符,从开头剪除。%-20.30c是2030如果列名少于 20 个字符,右边使用空格补齐,如果列名长于 30 个字符,从开头剪除。


0 0
原创粉丝点击