您的位置:首页 > 编程语言 > Java开发

Spring 利用logback输出打印日志:

2018-01-01 21:21 381 查看
Spring 利用logback输出打印日志:

一、pom.xml中添加相应的jar包:

1、首先由于logback的jar包与slf4j-log4j12冲突,所以先去掉相关的jar包:
<!--<dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <version>1.7.16</version>
    </dependency>-->
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>2.3.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-auth</artifactId>
        <version>2.3.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>2.3.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

   2、添加logback的相应jar包:
   <!-- logback -->
    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
       <version>1.6.0</version>
    </dependency>
    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>log4j-over-slf4j</artifactId>
       <version>1.6.0</version>
    </dependency>
    <dependency>
       <groupId>ch.qos.logback</groupId>
       <artifactId>logback-core</artifactId>
       <version>0.9.29</version>
    </dependency>
    <dependency>
       <groupId>ch.qos.logback</groupId>
       <artifactId>logback-classic</artifactId>
       <version>0.9.29</version>
    </dependency>
    <dependency>
       <groupId>ch.qos.logback</groupId>
       <artifactId>logback-access</artifactId>
       <version>0.9.29</version>
    </dependency>
    <dependency>  
       <groupId>org.logback-extensions</groupId>  
       <artifactId>logback-ext-spring</artifactId>  
       <version>0.1.2</version>  
    </dependency>

 二、在web.xml中配置监听
    <context-param>  
         <param-name>logbackConfigLocation</param-name>  
         <param-value>/WEB-INF/config/logback.xml</param-value>  
    </context-param>  
    <listener>  
         <listener-class>
             ch.qos.logback.ext.spring.web.LogbackConfigListener
         </listener-class>  
    </listener>

三、将logback的配置文件logback.xml放在/WEB-INF/config/文件夹下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="LOG_HOME" value="/opt/search/nimitzlogs" />
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 日志输出编码 -->
        <Encoding>UTF-8</Encoding>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            </pattern>
        </layout>
    </appender>
    <!-- 为了把不同的信息打印到不同的文件中,这里设置了不同的日志级别打印到不同文件中 -->
    <appender name="FILEINFO"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--<file>${LOG_HOME}/log-user.log</file>-->
        <Encoding>UTF-8</Encoding>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--用户行为操作的日志打印到以log-user开头的文件中 -->
            <FileNamePattern>${LOG_HOME}/log-user.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!-- 最多30个文件 -->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} [%file:%line] - %msg%n
            </pattern>
        </layout>
        <!--日志文件最大的大小--><!-- xiaozhao 每天生成新文件 -->
        <!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>30MB</MaxFileSize>
        </triggeringPolicy>-->
        <!-- 过滤器,只记录INFO级别的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="FILEERROR"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--<file>${LOG_HOME}/log-error.log</file>-->
        <Encoding>UTF-8</Encoding>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--在工程目录下自动生成logs文件夹 -->
            <FileNamePattern>${LOG_HOME}/log-error.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!-- 最多30个文件 -->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} [%file:%line] - %msg%n
            </pattern>
        </layout>
        <!--日志文件最大的大小--><!-- xiaozhao 每天生成新文件 -->
        <!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>30MB</MaxFileSize>
        </triggeringPolicy>-->
        <!-- 过滤器,只记录ERROR级别的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!-- 日志输出级别 输出INFO以上级别-->
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILEINFO"/>
        <appender-ref ref="FILEERROR"/>
    </root>
    <!-- 日志输出级别 -->
    <logger name="org.springframework" level="ERROR">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILEINFO" />
        <appender-ref ref="FILEERROR" />
    </logger>
    <logger name="org.apache.solr" level="ERROR">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILEINFO" />
        <appender-ref ref="FILEERROR" />
    </logger>
    <logger name="net.paoding" level="ERROR">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILEINFO" />
        <appender-ref ref="FILEERROR" />
    </logger>
    <logger name="org.apache.commons" level="ERROR">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILEINFO" />
        <appender-ref ref="FILEERROR" />
    </logger>

</configuration>

四、测试:
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  
  
public class Test {  
      private Logger log = LoggerFactory.getLogger(UsrController.class);  
     public String login(HttpServletRequest request) {  
            String username = request.getParameter("username");  
            String password = request.getParameter("password");  
            log.info("username:{}  and pwd:{}", username, password);  
            return null;  
    }  
}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: