//package cm.android.log;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import java.io.File;
//
//import ch.qos.logback.classic.Level;
//import ch.qos.logback.classic.LoggerContext;
//import ch.qos.logback.classic.android.LogcatAppender;
//import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
//import ch.qos.logback.classic.spi.ILoggingEvent;
//import ch.qos.logback.core.rolling.RollingFileAppender;
//import ch.qos.logback.core.rolling.TimeBasedRollingPolicy;
//
///**
// * https://github.com/tony19/logback-android/wiki
// */
//public class LogConfig {
//
//// public static void test() {
//// configLogback(Level.OFF, new File("/sdcard"));
//// //LogConfig.configLogbackByString(LogConfig.genXml(LogLevel.OFF,new File("/sdcard")));
//// // BasicLogcatConfigurator.configureDefaultContext();
////
//// Logger log = LoggerFactory.getLogger(LogConfig.class);
//// log.debug("gggg1,{},{}", "ggggg2", "ggggg3");
//// log.info("gggg1,{},{}", "ggggg2", "ggggg3");
//// log.error("gggg1,{},{}", "ggggg2", "ggggg3");
//// }
// //logback_debug.xml
// //logback.xml
//
// private static volatile boolean configFlag = false;
//
// private static final String PATTERN_RELEASE = "[%logger:%thread:%line]";
// private static final String PATTERN_DEBUG = "[%logger:%thread:%file:%method:%line]";
//
// private static String PATTERN_LOGCAT;
// private static String PATTERN_FILE;
//
// static {
// setPattern(PATTERN_DEBUG);
// }
//
// public static void configPattern(boolean debug) {
// if (debug) {
// setPattern(PATTERN_DEBUG);
// } else {
// setPattern(PATTERN_RELEASE);
// }
// }
//
// private static void setPattern(String pattern) {
// PATTERN_LOGCAT = pattern + " %msg%n";
// PATTERN_FILE = "%date %-5level " + pattern + " - %msg%n";
// }
//
// public static void configLogback(Level level, File logDir) {
// if (configFlag) {
// return;
// }
// configFlag = true;
//
// // add the newly created appenders to the root logger;
// // qualify Logger to disambiguate from org.slf4j.Logger
// ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory
// .getLogger(Logger.ROOT_LOGGER_NAME);
//
// // reset the default context (which may already have been initialized)
// // since we want to reconfigure it
// LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
// lc.reset();
//
// if (logDir != null) {
// setFileMode(root, lc, logDir);
// }
//
// setLogcatMode(root, lc);
//
// // Level:OFF
// root.setLevel(level);
// }
//
// private static void setFileMode(ch.qos.logback.classic.Logger root, LoggerContext lc, File logDir) {
// // setup FileAppender
// PatternLayoutEncoder encoder = new PatternLayoutEncoder();
// encoder.setContext(lc);
// encoder.setPattern(PATTERN_FILE);
// encoder.start();
//
// RollingFileAppender<ILoggingEvent> fileAppender = new RollingFileAppender<>();
// fileAppender.setContext(lc);
// fileAppender.setFile(logDir.getAbsolutePath() + File.separator + "logback.log");
// fileAppender.setEncoder(encoder);
// fileAppender.setLazy(true);
// fileAppender.setAppend(true);
//
// TimeBasedRollingPolicy<ILoggingEvent> policy = new TimeBasedRollingPolicy<>();
// policy.setContext(lc);
// policy.setMaxHistory(7);
// policy.setFileNamePattern(logDir.getAbsolutePath() + File.separator + "logback.%d{yyyy-MM-dd}.log.gz");
// policy.setParent(fileAppender);
// policy.start();
//
// fileAppender.setRollingPolicy(policy);
// fileAppender.start();
//
// root.addAppender(fileAppender);
// }
//
// private static void setLogcatMode(ch.qos.logback.classic.Logger root, LoggerContext lc) {
// // setup LogcatAppender
// PatternLayoutEncoder encoder2 = new PatternLayoutEncoder();
// encoder2.setContext(lc);
// encoder2.setPattern(PATTERN_LOGCAT);
// encoder2.start();
//
// LogcatAppender logcatAppender = new LogcatAppender();
// logcatAppender.setContext(lc);
// logcatAppender.setEncoder(encoder2);
// logcatAppender.start();
//
// root.addAppender(logcatAppender);
// }
//
//// public static String genXml(LogLevel level, File logDir) {
//// String xmlConfig = "<configuration>" + genFileString(logDir) +
//// "<appender name='LOGCAT' class='ch.qos.logback.classic.android.LogcatAppender'>" +
//// "<encoder>" +
//// "<pattern>" + PATTERN_LOGCAT + "</pattern>" +
//// "</encoder>" +
//// "</appender>" +
////
//// "<root level='" + level.getLevel() + "'>" + genFileAppenderRef(logDir) +
//// "<appender-ref ref='LOGCAT' />" +
//// "</root>" +
////
//// "</configuration>";
//// return xmlConfig;
//// }
////
//// public static enum LogLevel {
//// ALL("ALL"), DEBUG("DEBUG"), INFO("INFO"), ERROR("ERROR"), OFF("OFF");
////
//// private String levelStr;
////
//// private LogLevel(String levelStr) {
//// this.levelStr = levelStr;
//// }
////
//// public String getLevel() {
//// return levelStr;
//// }
//// }
////
//// private static String genFileString(File logDir) {
//// if (logDir == null) {
//// return "";
//// }
////
//// String fileXmlConfig = "<property name='LOG_DIR' value='" + logDir.getAbsolutePath() + "'/>"
//// + "<appender name='FILE' class='ch.qos.logback.core.rolling.RollingFileAppender'>" +
//// "<file>${LOG_DIR}/logback.log</file>" +
////
//// "<rollingPolicy class='ch.qos.logback.core.rolling.TimeBasedRollingPolicy'>" +
//// "<fileNamePattern>${LOG_DIR}/logback.%d{yyyy-MM-dd}.log.gz</fileNamePattern>" +
//// "<maxHistory>7</maxHistory>" +
//// "</rollingPolicy>" +
////
//// "<encoder>" +
//// "<pattern>" + PATTERN_FILE + "</pattern>" +
//// "</encoder>" +
////
//// "</appender>";
//// return fileXmlConfig;
//// }
////
//// private static String genFileAppenderRef(File logDir) {
//// if (logDir == null) {
//// return "";
//// }
//// return "<appender-ref ref='FILE' />";
//// }
////
//// public static void configLogbackByString(String xmlString) {
//// // reset the default context (which may already have been initialized)
//// // since we want to reconfigure it
//// LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
//// lc.reset();
////
//// JoranConfigurator config = new JoranConfigurator();
//// config.setContext(lc);
////
//// try {
//// InputStream stream = new ByteArrayInputStream(xmlString.getBytes(Charset.defaultCharset()));
//// config.doConfigure(stream);
//// } catch (Exception e) {
//// e.printStackTrace();
//// BasicLogcatConfigurator.configureDefaultContext();
//// }
//// }
//}