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);