We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Below code work well in logback 1.4.7 but not in logback 1.4.14.
I wanna know the cause of this occurrence.
the development environment is in java 17
import java.text.SimpleDateFormat; import java.util.Date; import org.slf4j.MDC; import ch.qos.logback.classic.Level; import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.encoder.PatternLayoutEncoder; import ch.qos.logback.classic.sift.MDCBasedDiscriminator; import ch.qos.logback.classic.sift.SiftingAppender; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.Appender; import ch.qos.logback.core.Context; import ch.qos.logback.core.FileAppender; import ch.qos.logback.core.sift.AppenderFactory; import ch.qos.logback.core.util.Duration; public class LogbackMessageLogTest { private static final LoggerContext LOG_CTX = new LoggerContext(); private static final String LOGGER_NAME = "ONLMSG"; private static final String LOG_MDC_KEY = "logName"; public static void main(String[] args) { LogbackMessageLogTest test = new LogbackMessageLogTest(); test.test(); } public void test() { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm"); long start = System.currentTimeMillis(); for (int i = 0; i < 100L; i++) { // logger String procTime = sdf.format(new Date(start + (i * 500L))); String date = procTime.substring(0, 8); String time = procTime.substring(8); String logName = date.concat("/ONLMSG_").concat(time); MDC.put(LOG_MDC_KEY, logName); Logger logger = getMessageLogger(); logger.error("Hello {}", i + 1); try { Thread.sleep(10); } catch (Exception e) { // ignore... } MDC.clear(); } } private Logger getMessageLogger() { Logger logger = LOG_CTX.exists(LOGGER_NAME); if (logger != null) { return logger; } synchronized (LogbackMessageLogTest.class) { logger = LOG_CTX.exists(LOGGER_NAME); if (logger != null) { return logger; } System.err.println("create logger..."); SiftingAppender sa = new SiftingAppender(); sa.setName(LOGGER_NAME + "SIFT"); sa.setContext(LOG_CTX); MDCBasedDiscriminator discriminator = new MDCBasedDiscriminator(); discriminator.setKey(LOG_MDC_KEY); discriminator.setDefaultValue(LOGGER_NAME + "_unknown"); discriminator.start(); sa.setDiscriminator(discriminator); sa.setMaxAppenderCount(10); sa.setTimeout(Duration.buildByMinutes(3L)); sa.setAppenderFactory(new AppenderFactory<ILoggingEvent>() { @Override public Appender<ILoggingEvent> buildAppender(Context context, String value) { String filename = "./" + value + ".log"; System.err.println("buildAppender " + filename); FileAppender<ILoggingEvent> appender = new FileAppender<>(); appender.setName("ONLMSG_" + value); appender.setContext(context); appender.setAppend(true); appender.setFile(filename); PatternLayoutEncoder encoder = new PatternLayoutEncoder(); encoder.setContext(context); encoder.setPattern("%msg%n"); encoder.start(); appender.setEncoder(encoder); appender.start(); return appender; } }); sa.start(); logger = LOG_CTX.getLogger(LOGGER_NAME); logger.addAppender(sa); logger.setLevel(Level.INFO); } return logger; } }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Below code work well in logback 1.4.7 but not in logback 1.4.14.
I wanna know the cause of this occurrence.
the development environment is in java 17
The text was updated successfully, but these errors were encountered: