SSM项目集成log4j及slf4j联合使用

1,231 阅读1分钟

1、maven工程在pom.xml中配置依赖

	<!-- 日志 -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

2、SSM项目默认 在resources目录下编写log4j.properties 不需显示配置读取配置文件

3、若log4j配置文件位置及名称有做修改且需动态加载

第一种方式:在web.xml中配置
<!-- Sprng载入的Log4j配置文件位置 -->
  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:conf/log4j.properties</param-value>
  </context-param>

  <!-- Spring刷新Log4j配置文件变动的间隔60秒(动态的改变记录级别和策略,不用重启应用),单位为毫秒 -->
  <context-param>
    <param-name>log4jRefreshInterval</param-name>
    <param-value>60000</param-value>
  </context-param>

  <!--log4j配置监听
    此方法在spring4.x的版本中都可以使用,但在Spring 4.2.1中已经将其标记为过时了.
    如果使用spring4.2.1以上的版本又会造成不兼容
    Log4jConfigListener必须要在Spring的Listener之前。-->
  <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>
第二种方式:spring配置bean类文件加载

第二种方式:第一步、编写Log4j配置类

public class Log4jConfig {
    private boolean reload = true;
    private int interval = 60000;

    public Log4jConfig(boolean reload,int interval){
        this.reload = reload;
        this.interval = interval;
        this.loadConfig();
    }

    public void loadConfig(){
        String log4jPath = Log4jConfig.class.getClassLoader().getResource("conf/log4j.properties").getPath();
        // 间隔60秒,检测文件是否修改,自动重新读取配置文件
        PropertyConfigurator.configureAndWatch(log4jPath, this.interval);
    }
}

第二种方式:第二步、spring-context.xml中配置bean

<!--配置log4j自动加载日志-->
    <bean class="zp.com.ws.config.Log4jConfig">
        <constructor-arg name="reload" value="true"/>
        <constructor-arg name="interval" value="60000"/>
    </bean>

4、slf4j联合使用

SLF4J(Simple logging Facade for Java)只是定义了一组日志接口,但并未提供任何实现。它允许你在后台使用任意一个日志类库。SLF4J使代码独立于任意一个特定的日志API。
常用的日志框架Log4J,logback和java.util.Logging。项目中联合slf4j使用。

4.1、maven工程在pom.xml中配置依赖

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.21</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.21</version>
    </dependency>

4.2、项目中使用区别

private final static Logger logger = Logger.getLogger(PortalInitController.class);
变更为:
private final static  Logger logger = LoggerFactory.getLogger((PortalInitController.class));


logger.info("登陆页面Set值 loginPageSet() "  + set);
变更为:
logger.info("登陆页面Set值 loginPageSet {} "  + set);