Search in sources :

Example 16 with FileAppender

use of ch.qos.logback.core.FileAppender in project OpenTripPlanner by opentripplanner.

the class Router method createLogger.

/**
 * Programmatically (i.e. not in XML) create a Logback logger for requests happening on this router.
 * http://stackoverflow.com/a/17215011/778449
 */
private static Logger createLogger(String file) {
    LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
    PatternLayoutEncoder ple = new PatternLayoutEncoder();
    ple.setPattern("%d{yyyy-MM-dd'T'HH:mm:ss.SSS} %msg%n");
    ple.setContext(lc);
    ple.start();
    FileAppender<ILoggingEvent> fileAppender = new FileAppender<>();
    fileAppender.setFile(file);
    fileAppender.setEncoder(ple);
    fileAppender.setContext(lc);
    fileAppender.start();
    Logger logger = (Logger) LoggerFactory.getLogger("REQ_LOG");
    logger.addAppender(fileAppender);
    logger.setLevel(Level.INFO);
    logger.setAdditive(false);
    return logger;
}
Also used : PatternLayoutEncoder(ch.qos.logback.classic.encoder.PatternLayoutEncoder) FileAppender(ch.qos.logback.core.FileAppender) ILoggingEvent(ch.qos.logback.classic.spi.ILoggingEvent) Logger(ch.qos.logback.classic.Logger) LoggerContext(ch.qos.logback.classic.LoggerContext)

Example 17 with FileAppender

use of ch.qos.logback.core.FileAppender in project dropwizard by dropwizard.

the class FileAppenderFactoryTest method validSetTotalSizeCapNoMaxFileSize.

@Test
void validSetTotalSizeCapNoMaxFileSize() throws IOException, ConfigurationException, NoSuchFieldException {
    final Field totalSizeCap = TimeBasedRollingPolicy.class.getDeclaredField("totalSizeCap");
    totalSizeCap.setAccessible(true);
    final YamlConfigurationFactory<FileAppenderFactory> factory = new YamlConfigurationFactory<>(FileAppenderFactory.class, validator, mapper, "dw");
    final FileAppender appender = factory.build(new ResourceConfigurationSourceProvider(), "yaml/appender_file_cap2.yaml").buildAppender(new LoggerContext());
    assertThat(appender).isInstanceOfSatisfying(RollingFileAppender.class, roller -> {
        assertThat(roller.getRollingPolicy()).isInstanceOfSatisfying(TimeBasedRollingPolicy.class, policy -> {
            try {
                assertThat(totalSizeCap.get(policy)).isInstanceOfSatisfying(FileSize.class, x -> assertThat(x.getSize()).isEqualTo(DataSize.mebibytes(50).toBytes()));
                assertThat(policy.getMaxHistory()).isEqualTo(5);
            } catch (IllegalAccessException e) {
                throw new RuntimeException("Unexpected illegal access", e);
            }
        });
    });
}
Also used : FileAppender(ch.qos.logback.core.FileAppender) RollingFileAppender(ch.qos.logback.core.rolling.RollingFileAppender) Field(java.lang.reflect.Field) YamlConfigurationFactory(io.dropwizard.configuration.YamlConfigurationFactory) ResourceConfigurationSourceProvider(io.dropwizard.configuration.ResourceConfigurationSourceProvider) LoggerContext(ch.qos.logback.classic.LoggerContext) Test(org.junit.jupiter.api.Test)

Example 18 with FileAppender

use of ch.qos.logback.core.FileAppender in project dropwizard by dropwizard.

the class FileAppenderFactoryTest method isImmediateFlushed.

@Test
void isImmediateFlushed() throws Exception {
    FileAppenderFactory<ILoggingEvent> fileAppenderFactory = new FileAppenderFactory<>();
    fileAppenderFactory.setArchive(false);
    Field isImmediateFlushField = OutputStreamAppender.class.getDeclaredField("immediateFlush");
    isImmediateFlushField.setAccessible(true);
    fileAppenderFactory.setImmediateFlush(false);
    assertThat(fileAppenderFactory.build(new LoggerContext(), "test", new DropwizardLayoutFactory(), new NullLevelFilterFactory<>(), new AsyncLoggingEventAppenderFactory())).isInstanceOfSatisfying(AsyncAppender.class, asyncAppender -> assertThat(asyncAppender).extracting(appender -> appender.getAppender("file-appender")).satisfies(fileAppender -> assertThat(isImmediateFlushField.get(fileAppender)).isEqualTo(fileAppenderFactory.isImmediateFlush())));
    fileAppenderFactory.setImmediateFlush(true);
    assertThat(fileAppenderFactory.build(new LoggerContext(), "test", new DropwizardLayoutFactory(), new NullLevelFilterFactory<>(), new AsyncLoggingEventAppenderFactory())).isInstanceOfSatisfying(AsyncAppender.class, asyncAppender -> assertThat(asyncAppender).extracting(appender -> appender.getAppender("file-appender")).satisfies(fileAppender -> assertThat(isImmediateFlushField.get(fileAppender)).isEqualTo(fileAppenderFactory.isImmediateFlush())));
}
Also used : SizeAndTimeBasedRollingPolicy(ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy) ILoggingEvent(ch.qos.logback.classic.spi.ILoggingEvent) SizeBasedTriggeringPolicy(ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy) ConstraintViolations(io.dropwizard.validation.ConstraintViolations) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) LoggerFactory(org.slf4j.LoggerFactory) LocalDateTime(java.time.LocalDateTime) OutputStreamAppender(ch.qos.logback.core.OutputStreamAppender) AsyncLoggingEventAppenderFactory(io.dropwizard.logging.async.AsyncLoggingEventAppenderFactory) LoggerContext(ch.qos.logback.classic.LoggerContext) ConfigurationException(io.dropwizard.configuration.ConfigurationException) FileAppender(ch.qos.logback.core.FileAppender) NullLevelFilterFactory(io.dropwizard.logging.filter.NullLevelFilterFactory) Appender(ch.qos.logback.core.Appender) Assertions.assertThatExceptionOfType(org.assertj.core.api.Assertions.assertThatExceptionOfType) Jackson(io.dropwizard.jackson.Jackson) AsyncAppender(ch.qos.logback.classic.AsyncAppender) YamlConfigurationFactory(io.dropwizard.configuration.YamlConfigurationFactory) BaseValidator(io.dropwizard.validation.BaseValidator) Path(java.nio.file.Path) TimeBasedRollingPolicy(ch.qos.logback.core.rolling.TimeBasedRollingPolicy) ConfigurationValidationException(io.dropwizard.configuration.ConfigurationValidationException) Collection(java.util.Collection) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) DiscoverableSubtypeResolver(io.dropwizard.jackson.DiscoverableSubtypeResolver) Validator(javax.validation.Validator) ResourceConfigurationSourceProvider(io.dropwizard.configuration.ResourceConfigurationSourceProvider) IOException(java.io.IOException) Field(java.lang.reflect.Field) Test(org.junit.jupiter.api.Test) DataSize(io.dropwizard.util.DataSize) FileSize(ch.qos.logback.core.util.FileSize) Logger(ch.qos.logback.classic.Logger) DropwizardLayoutFactory(io.dropwizard.logging.layout.DropwizardLayoutFactory) TempDir(org.junit.jupiter.api.io.TempDir) DateTimeFormatter(java.time.format.DateTimeFormatter) RollingFileAppender(ch.qos.logback.core.rolling.RollingFileAppender) FixedWindowRollingPolicy(ch.qos.logback.core.rolling.FixedWindowRollingPolicy) Field(java.lang.reflect.Field) AsyncLoggingEventAppenderFactory(io.dropwizard.logging.async.AsyncLoggingEventAppenderFactory) DropwizardLayoutFactory(io.dropwizard.logging.layout.DropwizardLayoutFactory) ILoggingEvent(ch.qos.logback.classic.spi.ILoggingEvent) LoggerContext(ch.qos.logback.classic.LoggerContext) Test(org.junit.jupiter.api.Test)

Example 19 with FileAppender

use of ch.qos.logback.core.FileAppender in project dropwizard by dropwizard.

the class FileAppenderFactoryTest method validSetTotalSizeCap.

@Test
void validSetTotalSizeCap() throws IOException, ConfigurationException, NoSuchFieldException {
    final Field totalSizeCap = TimeBasedRollingPolicy.class.getDeclaredField("totalSizeCap");
    totalSizeCap.setAccessible(true);
    final Field maxFileSize = SizeAndTimeBasedRollingPolicy.class.getDeclaredField("maxFileSize");
    maxFileSize.setAccessible(true);
    final YamlConfigurationFactory<FileAppenderFactory> factory = new YamlConfigurationFactory<>(FileAppenderFactory.class, validator, mapper, "dw");
    final FileAppender appender = factory.build(new ResourceConfigurationSourceProvider(), "yaml/appender_file_cap.yaml").buildAppender(new LoggerContext());
    assertThat(appender).isInstanceOfSatisfying(RollingFileAppender.class, roller -> assertThat(roller.getRollingPolicy()).isInstanceOfSatisfying(SizeAndTimeBasedRollingPolicy.class, policy -> {
        try {
            assertThat(totalSizeCap.get(policy)).isInstanceOfSatisfying(FileSize.class, x -> assertThat(x.getSize()).isEqualTo(DataSize.mebibytes(50).toBytes()));
            assertThat(maxFileSize.get(policy)).isInstanceOfSatisfying(FileSize.class, x -> assertThat(x.getSize()).isEqualTo(DataSize.mebibytes(10).toBytes()));
            assertThat(policy.getMaxHistory()).isEqualTo(5);
        } catch (IllegalAccessException e) {
            throw new RuntimeException("Unexpected illegal access", e);
        }
    }));
}
Also used : FileAppender(ch.qos.logback.core.FileAppender) RollingFileAppender(ch.qos.logback.core.rolling.RollingFileAppender) SizeAndTimeBasedRollingPolicy(ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy) ILoggingEvent(ch.qos.logback.classic.spi.ILoggingEvent) SizeBasedTriggeringPolicy(ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy) ConstraintViolations(io.dropwizard.validation.ConstraintViolations) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) LoggerFactory(org.slf4j.LoggerFactory) LocalDateTime(java.time.LocalDateTime) OutputStreamAppender(ch.qos.logback.core.OutputStreamAppender) AsyncLoggingEventAppenderFactory(io.dropwizard.logging.async.AsyncLoggingEventAppenderFactory) LoggerContext(ch.qos.logback.classic.LoggerContext) ConfigurationException(io.dropwizard.configuration.ConfigurationException) FileAppender(ch.qos.logback.core.FileAppender) NullLevelFilterFactory(io.dropwizard.logging.filter.NullLevelFilterFactory) Appender(ch.qos.logback.core.Appender) Assertions.assertThatExceptionOfType(org.assertj.core.api.Assertions.assertThatExceptionOfType) Jackson(io.dropwizard.jackson.Jackson) AsyncAppender(ch.qos.logback.classic.AsyncAppender) YamlConfigurationFactory(io.dropwizard.configuration.YamlConfigurationFactory) BaseValidator(io.dropwizard.validation.BaseValidator) Path(java.nio.file.Path) TimeBasedRollingPolicy(ch.qos.logback.core.rolling.TimeBasedRollingPolicy) ConfigurationValidationException(io.dropwizard.configuration.ConfigurationValidationException) Collection(java.util.Collection) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) DiscoverableSubtypeResolver(io.dropwizard.jackson.DiscoverableSubtypeResolver) Validator(javax.validation.Validator) ResourceConfigurationSourceProvider(io.dropwizard.configuration.ResourceConfigurationSourceProvider) IOException(java.io.IOException) Field(java.lang.reflect.Field) Test(org.junit.jupiter.api.Test) DataSize(io.dropwizard.util.DataSize) FileSize(ch.qos.logback.core.util.FileSize) Logger(ch.qos.logback.classic.Logger) DropwizardLayoutFactory(io.dropwizard.logging.layout.DropwizardLayoutFactory) TempDir(org.junit.jupiter.api.io.TempDir) DateTimeFormatter(java.time.format.DateTimeFormatter) RollingFileAppender(ch.qos.logback.core.rolling.RollingFileAppender) FixedWindowRollingPolicy(ch.qos.logback.core.rolling.FixedWindowRollingPolicy) Field(java.lang.reflect.Field) YamlConfigurationFactory(io.dropwizard.configuration.YamlConfigurationFactory) SizeAndTimeBasedRollingPolicy(ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy) ResourceConfigurationSourceProvider(io.dropwizard.configuration.ResourceConfigurationSourceProvider) LoggerContext(ch.qos.logback.classic.LoggerContext) FileSize(ch.qos.logback.core.util.FileSize) Test(org.junit.jupiter.api.Test)

Example 20 with FileAppender

use of ch.qos.logback.core.FileAppender in project helios by spotify.

the class LoggingTestWatcher method setupFileLogging.

/**
 * Sets up a FileAppender under the path {@code $logDir/<timestamp>-<name>-<pid>.log}. If not set
 * as a system property then {@code $logDir} falls back to {@code /tmp/helios-test/log}.
 */
private void setupFileLogging(final String name) {
    final ch.qos.logback.classic.Logger rootLogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(ROOT_LOGGER_NAME);
    final LoggerContext context = rootLogger.getLoggerContext();
    context.reset();
    final String ts = new SimpleDateFormat("yyyyMMdd'T'HHmmss.SSS").format(new Date());
    final String pid = ManagementFactory.getRuntimeMXBean().getName().split("@", 2)[0];
    final PatternLayoutEncoder ple = new PatternLayoutEncoder();
    ple.setContext(context);
    ple.setPattern("%d{HH:mm:ss.SSS} %-5level %logger{1} %F:%L - %msg%n");
    ple.start();
    final Path directory = Paths.get(System.getProperty("logDir", "/tmp/helios-test/log/"));
    final String filename = String.format("%s-%s-%s.log", ts, name, pid);
    final Path file = directory.resolve(filename);
    final FileAppender<ILoggingEvent> fileAppender = new FileAppender<>();
    fileAppender.setEncoder(ple);
    fileAppender.setFile(file.toString());
    fileAppender.setContext(context);
    fileAppender.start();
    rootLogger.setLevel(Level.DEBUG);
    rootLogger.addAppender(fileAppender);
    try {
        Files.createDirectories(directory);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    configureLogger("org.eclipse.jetty", Level.ERROR);
    configureLogger("org.apache.curator", Level.ERROR);
    configureLogger("org.apache.zookeeper", Level.ERROR);
    configureLogger("com.spotify.helios", Level.DEBUG);
}
Also used : PatternLayoutEncoder(ch.qos.logback.classic.encoder.PatternLayoutEncoder) Path(java.nio.file.Path) FileAppender(ch.qos.logback.core.FileAppender) IOException(java.io.IOException) Logger(org.slf4j.Logger) ILoggingEvent(ch.qos.logback.classic.spi.ILoggingEvent) LoggerContext(ch.qos.logback.classic.LoggerContext) Date(java.util.Date) SimpleDateFormat(java.text.SimpleDateFormat)

Aggregations

FileAppender (ch.qos.logback.core.FileAppender)46 ILoggingEvent (ch.qos.logback.classic.spi.ILoggingEvent)33 LoggerContext (ch.qos.logback.classic.LoggerContext)27 File (java.io.File)23 PatternLayoutEncoder (ch.qos.logback.classic.encoder.PatternLayoutEncoder)18 Logger (ch.qos.logback.classic.Logger)17 Appender (ch.qos.logback.core.Appender)14 RollingFileAppender (ch.qos.logback.core.rolling.RollingFileAppender)12 Test (org.junit.Test)9 ConsoleAppender (ch.qos.logback.core.ConsoleAppender)6 Path (java.nio.file.Path)6 OutputStreamAppender (ch.qos.logback.core.OutputStreamAppender)5 FileSize (ch.qos.logback.core.util.FileSize)5 Test (org.junit.jupiter.api.Test)5 FixedWindowRollingPolicy (ch.qos.logback.core.rolling.FixedWindowRollingPolicy)4 SizeBasedTriggeringPolicy (ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy)4 IOException (java.io.IOException)4 Field (java.lang.reflect.Field)4 SyslogAppender (ch.qos.logback.classic.net.SyslogAppender)3 SizeAndTimeBasedRollingPolicy (ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy)3