in appactive-java-client/client-support/src/main/java/io/appactive/support/log/LoggerBuilder.java [173:239]
private static RollingFileAppender getAppender(String name, Level level) {
LoggerContext context = getContext();
//这里是可以用来设置appender的,在xml配置文件里面,是这种形式:
// <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
RollingFileAppender appender = new RollingFileAppender();
//设置上下文,每个logger都关联到logger上下文,默认上下文名称为default。
// 但可以使用<contextName>设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改。
appender.setContext(context);
//appender的name属性
appender.setName("FILE-" + name);
//设置文件名
String logPath = getLogPath() + "/";
appender.setFile(OptionHelper.substVars(logPath + name + ".log", context));
appender.setAppend(true);
appender.setPrudent(false);
if(level != null){
// 这里设置级别过滤器
LevelFilter levelFilter = getLevelFilter(Level.ERROR);
levelFilter.start();
appender.addFilter(levelFilter);
}
//设置文件创建时间及大小的类
SizeAndTimeBasedRollingPolicy policy = new SizeAndTimeBasedRollingPolicy();
policy.setContext(context);
//文件名格式
String fp = OptionHelper.substVars(logPath + "history/%d{yyyy-MM-dd}/" + name + "-%d{yyyy-MM-dd}.%i.log",
context);
//最大日志文件大小
policy.setMaxFileSize(FileSize.valueOf("50MB"));
//设置文件名模式
policy.setFileNamePattern(fp);
//设置最大历史记录为3条
policy.setMaxHistory(3);
//总大小限制
policy.setTotalSizeCap(FileSize.valueOf("2GB"));
//设置父节点是appender
policy.setParent(appender);
//设置上下文,每个logger都关联到logger上下文,默认上下文名称为default。
// 但可以使用<contextName>设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改。
policy.setContext(context);
policy.start();
PatternLayoutEncoder encoder = new PatternLayoutEncoder();
//设置上下文,每个logger都关联到logger上下文,默认上下文名称为default。
// 但可以使用<contextName>设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改。
encoder.setContext(context);
//设置格式 格式化日志的logger的输出格式不同
if(!name.endsWith(STANDARD_LOG_NAME_END_FIX)){
encoder.setPattern(FILE_LOG_PATTERN);
}else {
encoder.setPattern(STANDARD_FILE_LOG_PATTERN);
}
encoder.start();
//加入下面两个节点
appender.setRollingPolicy(policy);
appender.setEncoder(encoder);
appender.start();
return appender;
}