java学习笔记系列(2)--- 日志篇

日志的作用:

不言而喻,任何软件系统都会使用日志,定位问题,分析问题,监控系统当前状态等等都会使用到日志。

 

当前最流行的日志框架:

1、SLF4J+Log4j(如果之前的项目工程一直使用log4j,建议继续使用

2、SLF4J+Logback(新的项目,建议使用此组合

 

 SLF4J

    SLF4J是简单的日志外观模式框架,抽象了各种日志框架例如Logback、Log4j、Commons-logging和JDK自带的logging实现接口。它使得用户可以在部署时使用自己想要的日志框架。SLF4J是轻量级的,在性能方面几乎是零消耗的。
    SLF4J没有替代任何日志框架,它仅仅是标准日志框架的外观模式。如果在类路径下除了SLF4J再没有任何日志框架,那么默认状态是在控制台输出日志。

 

Logback

    Logback是Log4j的改进版本,而且原生支持SLF4J(因为是同一作者开发的),因此从其它日志框架如Log4j或JDK的logging迁移到Logback是完全可行的。
    由于Logback原生支持SLF4J,因此Logback+SLF4J的组合是日志框架的最佳选择,比SLF4J+其它日志框架的组合要快一些。而且Logback的配置可以是XML或Groovy代码

 

SLF4J + Logback

1.maven依赖

在pom.xml包含下面的依赖:它会自动包含所有的依赖包logback-core、slf4j-api……

<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.0.7</version>
</dependency>

 

2.配置和使用

1)给个常用的配置:

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

<!-- 尽量别用绝对路径,如果带参数不同容器路径解释可能不同 -->  
    <property name="LOG_HOME" value="logs/"/>     
    <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{H:mm} %-5level [%logger{16}] %msg%n</pattern>
        </encoder>
    </appender>
    
    <!-- 按照每天生成日志文件 -->  
    <appender name="FILE" 
        class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <Encoding>UTF-8</Encoding>  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <FileNamePattern>${LOG_HOME}/myApp.%d{yyyy-MM-dd}.log</FileNamePattern>  
            <MaxHistory>30</MaxHistory>  
        </rollingPolicy>  
        <layout class="ch.qos.logback.classic.PatternLayout">  
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n  
            </pattern>  
       </layout>  
    </appender>   

    <!-- 用来设置某一个包或者具体的某一个类的日志打印级别,包名要与实际项目一致 -->
    <logger name="com.bcc" level="debug" /> <!-- 将级别为“DEBUG”及大于“DEBUG”的日志信息传递给root处理,本身并不打印 -->

    <root level="info"> <!-- root将级别为“INFO”及大于“INFO”的日志信息交给已经配置好的名为“Console”的appender处理,“Console”appender将信息打印到Console; -->
        <appender-ref ref="Console" /> <!-- 标识这个appender将会添加到这个logger -->
        <appender-ref ref="FILE" />
    </root>
</configuration>

  

 详细的配置参考:

 http://blog.csdn.net/haidage/article/details/6794509

 2)java代码中使用: 
package com.stu.system.action; 

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class BlogAction{
     //定义一个全局的记录器,通过LoggerFactory获取
     private final static Logger logger = LoggerFactory.getLogger(BlogAction.class); 
     /**
     * @param args
     */
    public static void main(String[] args) {
        logger.info("logback 成功了");
        logger.error("logback 成功了");
    }
}
 
 
 

你可能感兴趣的:(Java学习)