web项目添加log4j.properties 按年月日文件夹产生日志

2019-10-31 1543 星期四 enAn
说明

1. 重写的 Log4jFile extends RollingFileAppender
2. Log4jFile.java 中的格式化类型与log4j.properties中的输出的文件目录一致 log4j.appender.logFile.File=${
   log.home.dir}/yyyy/MM/dd/web.log
3. 指向自己重写的类      log4j.appender.logFile=com.ecommerce.platform.common.log.Log4jFile
4. 另外log4j.properties中
  log4j.rootLogger的变量logFile,必需与log4j.appender.logFile=com.ecommerce.platform.common.log.Log4jFile保持一致,不然不会输出日志
  5.监听器,把变量设置到环境中 [设置到系统属性集 ]java.util.Properties
  System.out.println(className + "[设置到系统属性集 ]");
				props.setProperty(InitConstant.DUBBO_REGISTRY_APPLICATION, dubbo_registry_application);//dubbo注册的应用名字
				props.setProperty(InitConstant.DUBBO_REGISTRY_ADDRESS,dubbo_registry_address);//dubbo:注册地址
				props.setProperty(InitConstant.DUBBO_CATALINA_HOME, dubbo_catalina_home);//dubbo缓存文件位置
				props.setProperty(InitConstant.LOG_HOME_DIR, log_dir);//log日志文件位置

  

**

log4j.properties和spring-mvc.xml,取监听器中设置的值

**

log4j.properties 设置值
log4j.appender.logFile.File=${
   log.home.dir}/yyyy/MM/dd/web.log

spring-mvc.xml 设置值
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
	<dubbo:application name="#{systemProperties['dubbo.registry.application']}" />
	<!-- 使用zookeeper注册中心暴露服务地址 --> 
	<dubbo:registry protocol="zookeeper" address="#{systemProperties['dubbo.registry.address']}" file="#{systemProperties['dubbo.catalina.home']}"/>

log4j.properties配置文件内容

log4j.rootLogger=INFO,DEBUG,console,logFile,ERROR

## 控制台,begin ##
log4j.appender.console=org.apache.log4j.ConsoleAppender 
log4j.appender.console.layout=org.apache.log4j.PatternLayout 
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %-5p [%t] %c.%M(%L) - %m%n
## 控制台,end ##

### 输出到控制台,begin ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n  
### 输出到控制台,end ###

### 日志文件设置,begin ###
log4j.appender.logFile=com.ecommerce.platform.common.log.Log4jFile
#输出DEBUG级别日志到文件中 
log4j.appender.logFile.Threshold=debug 
log4j.appender.logFile.File=${log.home.dir}/yyyy/MM/dd/web.log
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.logFile.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %-5p [%t] %c.%M(%L) - %m%n
log4j.appender.logFile.MaxFileSize=50MB
### 日志文件设置,end ###

## 指定dao输出sql ##
# 打印sql语句:debug; 执行结果:trace	##
## 指定mapper配置文件中的namespace	##
## (log4j.logger.包名)原因是mybatis设置日志打印级别为TRACE即可输出sql文及sql参数和结果集。 ##
### sql ,begin ###
log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
## ********************************* ##
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug,stdout
## ********************************* ##
log4j.logger.jdbc.sqlonly=OFF
log4j.logger.jdbc.sqltiming=OFF
log4j.logger.jdbc.audit=OFF
log4j.logger.jdbc.resultset=OFF
log4j.logger.jdbc.connection=OFF
### sql ,end ###

把监听器加放web.xml中

<!-- 自定义监听器,加载指定属性文件中的内容 -->
	 <listener>
        <listener-class>com.ecommerce.platform.listener.InitSystemConfigListener</listener-class>
    </listener>

监听器

package com.ecommerce.platform.listener;

import java.util.Map;
import java.util.Properties;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import com.ecommerce.platform.common.constant.InitConstant;
import com.ecommerce.platform.common.exception.CommonConfigException;
import com.ecommerce.platform.common.util.LoadProperties;
import com.ecommerce.platform.common.util.PropertiesUtil;

 /**
 *                    .::::.
 *                  .::::::::.
 *                 :::::::::::  I && YOU
 *             ..:::::::::::'
 *           '::::::::::::'
 *             .::::::::::
 *        '::::::::::::::..
 *             ..::::::::::::.
 *           ``::::::::::::::::
 *            ::::``:::::::::'        .:::.
 *           ::::'   ':::::'       .::::::::.
 *         .::::'      ::::     .:::::::'::::.
 *        .:::'       :::::  .:::::::::' ':::::.
 *       .::'        :::::.:::::::::'      ':::::.
 *      .::'         ::::::::::::::'         ``::::.
 *  ...:::           ::::::::::::'              ``::.
 * ````':.          ':::::::::'                  ::::..
 *                    '.:::::'                    ':'````..
 * 自定义监听器,加载属性文件中定义的变量值,在web.xml中使用,特别是配置log4j的值
 * @author enAn,2019-07-22
 * 参考:https://blog.csdn.net/liufunan/article/details/50715167
 */
public class InitSystemConfigListener implements ServletContextListener {
   
	public static final String className = "初始化-自定义监听器[InitSystemConfigListener]...";
	 public void contextDestroyed(ServletContextEvent sce) {
     
	        System.out.println(className + "web exit ... ");  
	    }
	    public void contextInitialized(ServletContextEvent sce) {
   
	        try {
   
	        	Map<String, String> initPropertiesData = PropertiesUtil.getInitProperties();
	        	String log_dir = "";
				String dubbo_catalina_home = "";
				System.out.println(className + "init");
				Properties props= System.getProperties(); //获得系统属性集   
				String os = props.getProperty
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值