1
我想以編程方式logappendar,但是這個代碼不correcty工作的logback添加appendar編程
這是我的配置代碼...
public enum Logger {
INSTANCE;
Logger logger;
LoggerContext loggerContext;
public final String CONSOLE_APPENDER_NAME="CONSOLE_";
public final String FILE_APPENDER_NAME="FILE_";
public final String LOGGER_NAME="LOGGER";
public final String LOG_FILE_NAME="log.log";
Logger(){
loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
String patternRf = "%d{HH:mm:ss} %-5level [%thread] %logger{36} - %msg%n";
PatternLayoutEncoder encoder = new PatternLayoutEncoder();
encoder.setPattern(patternRf);
encoder.setContext(loggerContext);
encoder.start();
ConsoleAppender<ILoggingEvent> soutAppender = new ConsoleAppender<ILoggingEvent>();
soutAppender.setName(CONSOLE_APPENDER_NAME);
soutAppender.setEncoder(encoder);
loggerContext.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME).detachAndStopAllAppenders();
logger = loggerContext.getLogger(LOGGER_NAME);
logger.detachAndStopAllAppenders();
IPath logDirPath = new Path("/log");
File logDir = new File(logDirPath.toOSString());
if(!logDir.exists()){
logDir.mkdir();
}
RollingFileAppender<ILoggingEvent> rfAppender = rollingFileLog(logDirPath, loggerContext, encoder);
rfAppender.start();
soutAppender.start();
logger.addAppender(soutAppender);
logger.addAppender(rfAppender);
}
private RollingFileAppender<ILoggingEvent> rollingFileLog(IPath logDirPath, LoggerContext loggerContext, PatternLayoutEncoder encoder) {
RollingFileAppender<ILoggingEvent> logFileAppender = new RollingFileAppender<ILoggingEvent>();
logFileAppender.setContext(loggerContext);
logFileAppender.setName(FILE_APPENDER_NAME);
logFileAppender.setEncoder(encoder);
logFileAppender.setAppend(true);
logFileAppender.setFile(logDirPath.append(LOG_FILE_NAME).toOSString());
TimeBasedRollingPolicy<ILoggingEvent> logFilePolicy = new TimeBasedRollingPolicy<ILoggingEvent>();
logFilePolicy.setContext(loggerContext);
logFilePolicy.setParent(logFileAppender);
logFilePolicy.setFileNamePattern("./log/%d{yyyy,aux}/%d{MM,aux}/%d{dd,aux}/service_rolling.log.%d{yyyy-MM-dd_hhmmss}");
logFilePolicy.setMaxHistory(7);
logFilePolicy.start();
logFileAppender.setRollingPolicy(logFilePolicy);
return logFileAppender;
}
public void debug(String msg){
logger.debug(msg);
}
}
,這是我的測試代碼
public class test {
public static void main(String[] args) {
Logger.INSTANCE.debug("a");
Logger.INSTANCE.debug("b");
Logger.INSTANCE.debug("c");
Logger.INSTANCE.debug("d");
Logger.INSTANCE.debug("e");
Logger.INSTANCE.debug("f");
Logger.INSTANCE.debug("g");
Logger.INSTANCE.debug("h");
}
}
測試後我的控制檯wrriten此消息 11:14:53調試[線程1]登錄 - a
和我的日誌文件wrriten此消息
11:14:53 DEBUG [Thread-1] LOGGER - a
11:14:53 DEBUG [Thread-1] LOGGER - b
11:14:53 DEBUG [Thread-1] LOGGER - b
11:14:53 DEBUG [Thread-1] LOGGER - c
11:14:53 DEBUG [Thread-1] LOGGER - c
11:14:53 DEBUG [Thread-1] LOGGER - d
11:14:53 DEBUG [Thread-1] LOGGER - d
11:14:53 DEBUG [Thread-1] LOGGER - e
11:14:53 DEBUG [Thread-1] LOGGER - e
11:14:53 DEBUG [Thread-1] LOGGER - f
.....
我認爲第一個日誌被writen勸慰
和別人是writen到文件
這是什麼程序的問題..
感謝