package com.taobao.tddl.monitor.logger.log4j;
import java.io.File;
import org.apache.log4j.Appender;
import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import com.taobao.tddl.monitor.logger.DynamicLogger;
import com.taobao.tddl.monitor.logger.LoggerInit;
public class DynamicLog4jLogger extends DynamicLogger {
public void init() {
Appender tddlAppender = buildAppender("TDDL_Appender", "tddl.log", "%d %p [%c{10}] - %m%n");
Appender md5sqlAppender = buildAppender("TDDL_MD5_TO_SQL_Appender", "tddl.md5sql.log", "%d %p [%c{10}] - %m%n");
Appender nagiosAppender = buildAppender("TDDL_Nagios_Appender", "Nagios.log", "%m%n");
Appender atomStatisticAppender = buildDailyMaxRollingAppender("TDDL_Atom_Statistic_Appender",
"tddl-atom-statistic.log",
"%m",
6);
Appender matrixStatisticAppender = buildDailyMaxRollingAppender("TDDL_Matrix_Statistic_Appender",
"tddl-matrix-statistic.log",
"%m",
12);
Appender connStatisticAppender = buildDailyMaxRollingAppender("TDDL_Conn_Statistic_Appender",
"tddl-conn-statistic.log",
"%m",
6);
Appender statisticAppender = buildAppender("TDDL_Statistic_Appender", "tddl-statistic.log", "%m");
Appender snapshotAppender = buildAppender("TDDL_Snapshot_Appender", "tddl-snapshot.log", "%m");
org.apache.log4j.Logger logger = (Logger) LoggerInit.TDDL_LOG.getDelegate();
logger.setAdditivity(false);
logger.removeAllAppenders();
logger.addAppender(tddlAppender);
logger.setLevel(Level.WARN);
logger = (Logger) LoggerInit.TDDL_MD5_TO_SQL_MAPPING.getDelegate();
logger.setAdditivity(false);
logger.removeAllAppenders();
logger.addAppender(md5sqlAppender);
logger.setLevel(Level.DEBUG);
logger = (Logger) LoggerInit.TDDL_Nagios_LOG.getDelegate();
logger.setAdditivity(false);
logger.removeAllAppenders();
logger.addAppender(nagiosAppender);
logger.setLevel(Level.INFO);
logger = (Logger) LoggerInit.TDDL_Atom_Statistic_LOG.getDelegate();
logger.setAdditivity(false);
logger.removeAllAppenders();
logger.addAppender(atomStatisticAppender);
logger.setLevel(Level.INFO);
logger = (Logger) LoggerInit.TDDL_Matrix_Statistic_LOG.getDelegate();
logger.setAdditivity(false);
logger.removeAllAppenders();
logger.addAppender(matrixStatisticAppender);
logger.setLevel(Level.INFO);
logger = (Logger) LoggerInit.TDDL_Conn_Statistic_LOG.getDelegate();
logger.setAdditivity(false);
logger.removeAllAppenders();
logger.addAppender(connStatisticAppender);
logger.setLevel(Level.INFO);
logger = (Logger) LoggerInit.TDDL_Statistic_LOG.getDelegate();
logger.setAdditivity(false);
logger.removeAllAppenders();
logger.addAppender(statisticAppender);
logger.setLevel(Level.INFO);
logger = (Logger) LoggerInit.TDDL_Snapshot_LOG.getDelegate();
logger.setAdditivity(false);
logger.removeAllAppenders();
logger.addAppender(snapshotAppender);
logger.setLevel(Level.INFO);
}
public void initRule() {
Appender dbTabAppender = buildAppender("TDDL_Vtab_Appender", "tddl-db-tab.log", "%m");
Appender vSlotAppender = buildAppender("TDDL_Vtab_Appender", "tddl-vslot.log", "%m");
Appender dynamicRuleAppender = buildAppender("TDDL_DynamicRule_Appender", "tddl-dynamic-rule.log", "%m");
org.apache.log4j.Logger logger = (Logger) LoggerInit.DB_TAB_LOG.getDelegate();
logger.setAdditivity(false);
logger.removeAllAppenders();
logger.addAppender(dbTabAppender);
logger.setLevel(Level.INFO);
logger = (Logger) LoggerInit.VSLOT_LOG.getDelegate();
logger.setAdditivity(false);
logger.removeAllAppenders();
logger.addAppender(vSlotAppender);
logger.setLevel(Level.INFO);
logger = (Logger) LoggerInit.DYNAMIC_RULE_LOG.getDelegate();
logger.setAdditivity(false);
logger.removeAllAppenders();
logger.addAppender(dynamicRuleAppender);
logger.setLevel(Level.INFO);
}
private Appender buildAppender(String name, String fileName, String pattern) {
DailyRollingFileAppender appender = new DailyRollingFileAppender();
appender.setName(name);
appender.setAppend(true);
appender.setEncoding(getEncoding());
appender.setLayout(new PatternLayout(pattern));
appender.setFile(new File(getLogPath(), fileName).getAbsolutePath());
appender.activateOptions();// 很重要,否则原有日志内容会被清空
return appender;
}
private Appender buildDailyMaxRollingAppender(String name, String fileName, String pattern, int maxBackupIndex) {
DailyMaxRollingFileAppender appender = new DailyMaxRollingFileAppender();
appender.setName(name);
appender.setAppend(true);
appender.setEncoding(getEncoding());
appender.setLayout(new PatternLayout(pattern));
appender.setDatePattern("'.'yyyy-MM-dd-HH");
appender.setMaxBackupIndex(maxBackupIndex);
appender.setFile(new File(getLogPath(), fileName).getAbsolutePath());
appender.activateOptions();// 很重要,否则原有日志内容会被清空
return appender;
}
}