spark使用logback+slf4j 替换log4j+slf4j

背景:

            spark1.6以前的版本默认是log4j+slf4j的方案来做日志, 在我们实际开发项目的过程中大多数是使用logback+slf4j的方案来做日志。

配置方法: 

1.  logbak+slf4j 项目中 java类里面的代码的写法和 log4j+slf4j的 代码写法完全一模一样的

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
/**
 *这个类提供了一些根据类的class文件位置来定位的方法。
 *
 * @version 1.0 2011-4-27 上午12:40:08
 * @since 1.0
 */
public class ClassLoaderUtil{
 
   private final static Logger log   = LoggerFactory.getLogger(ClassLoaderUtil.class);

 slf4j的切面日志功能功不可没,代码中可以忽略logback或者 log4j 的存在

2.   去掉 maven pom.xml 所有直接/间接的 log4j 依赖

比如

<dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>${spark.version}</version>
            <!-- spark默认使用log4j,我们需要使用logback,所以将讲spark的log4j依赖进行移除-->
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-log4j12</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>

 

3.   去掉 maven pom.xml 所有直接/间接的 slf4j-log4j12 依赖

如上面的 exclusion

4.  增加 logback 依赖

        <!--******** logback and slf4j ******** -->
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${version.logback}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${version.logback}</version>
      </dependency>
 
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-access</artifactId>
        <version>${version.logback}</version>
      </dependency>
 
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${version.slf4j}</version>
      </dependency>
 
      <!--jul桥接 用来输出 Java Logging Framework (JUL) -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jul-to-slf4j</artifactId>
        <version>${version.slf4j}</version>
      </dependency>
 
      <!-- jcl桥接,用来输出 第三方Jakarta Commons Logging (JCL) -->
      <dependency>
         <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${version.slf4j}</version>
      </dependency>

 

猜你喜欢

转载自see-you-again.iteye.com/blog/2277676