Log4j2 не работает после деплоя tomcat 8

251
30 сентября 2017, 20:12

Ситуация следующая: Для логирования использую log4j2 в связке с slf4j. Проект деплою на tomcat8. Конфигурация програмная(без xml)

Проблема следующая: В тестах логирование работает: файлы создаются, в консоль все пишется. После деплоя во время работы приложения на сервере логирование(ни в файл ни в консоль) не работает(используется стандартное).

Думал проблема с правами, но дело не в них(на всякий случай выдал права 777).

В web-app тоже на всякий случай закидывал свой конфиг, но ничего не изменилось.

Конфигурационный файл log4j:

@Plugin(name = "Log4j2Config", category = "ConfigurationFactory")
@Order(0)
public class Log4j2Config extends ConfigurationFactory {
    private static final String NAME_ROLLING_FILE = "com.bla";
    private static final String NAME_CONSOLE = "Console";
    private static final String PATTERN_LAYOUT = "%d [%t]  %-5level %logger{36}: %msg%n";
    private static final String PATH = "Documents/tomcat/logs/socialNetLogs/";
    private static final String LOG_FILE_NAME = "socialNet.log";
    private static final String LOG_FILE_NAME_PATTERN = "socialNet-%d{dd-MM-yyyy}-%i.log";
    @Override
    public Configuration getConfiguration(final LoggerContext loggerContext, final ConfigurationSource source) {
        return getConfiguration(loggerContext, source.toString(), null);
    }
    @Override
    public Configuration getConfiguration(final LoggerContext loggerContext, final String name, final URI configLocation) {
        return new Log4jConfiguration();
    }

    @Override
    protected String[] getSupportedTypes() {
        return new String[]{"*"};
    }
    private static class Log4jConfiguration extends DefaultConfiguration {
        public Log4jConfiguration() {
            super.doConfigure();
            initAppenderLogger(getRollingFileAppender(NAME_ROLLING_FILE), getLogger(NAME_ROLLING_FILE, Level.DEBUG), Level.DEBUG, NAME_ROLLING_FILE);
            initAppenderLogger(getConsoleAppender(NAME_CONSOLE), getLogger(NAME_CONSOLE,  Level.DEBUG), Level.DEBUG, NAME_CONSOLE);
            initAppenderLogger(getConsoleAppender(getRootLogger().getName()), getRootLogger(), Level.ERROR, getRootLogger().getName());

        }
        private void initAppenderLogger(Appender appender, LoggerConfig loggerConfig, Level level, String loggerName) {
            appender.start();
            addAppender(appender);
            addLogger(loggerName, loggerConfig);
            getLogger(loggerName).addAppender(appender, level, null);
            System.out.println("success" + getLogger(loggerName).getName() + appender.getName());
        }
        private Appender getRollingFileAppender(String appenderName) {
            final TimeBasedTriggeringPolicy timeBasedTriggeringPolicy = TimeBasedTriggeringPolicy.newBuilder()
                    .withInterval(1)
                    .withModulate(true)
                    .build();
            String oneMB = "1 M";
            final SizeBasedTriggeringPolicy sizeBasedTriggeringPolicy = SizeBasedTriggeringPolicy.createPolicy(oneMB);
            final CompositeTriggeringPolicy policy = CompositeTriggeringPolicy.createPolicy(timeBasedTriggeringPolicy,
                    sizeBasedTriggeringPolicy);
            final DefaultRolloverStrategy rolloverStrategy = DefaultRolloverStrategy.newBuilder()
                    .withMax("14")
                    .withMin("1")
                    .withFileIndex("max")
                    .withConfig(this)
                    .withCompressionLevelStr(Deflater.NO_COMPRESSION + "")
                    .build();

            System.out.println("in rolling file");
            return RollingFileAppender.newBuilder()
                    .withName(appenderName)
                    .withAdvertise(Boolean.parseBoolean(null))
                    .withAdvertiseUri(null)
                    .withAppend(true)
                    .withBufferedIo(true)
                    .withBufferSize(8192)
                    .withLayout(PatternLayout.newBuilder()
                            .withPattern(PATTERN_LAYOUT)
                            .withConfiguration(this)
                            .build())
                    .withPolicy(policy)
                    .withStrategy(rolloverStrategy)
                    .withFilePattern(PATH + LOG_FILE_NAME_PATTERN)
                    .withFileName(PATH + LOG_FILE_NAME)
                    .build();
        }
        private Appender getConsoleAppender(String appenderName) {
            return ConsoleAppender.newBuilder()
                    .withName(appenderName)
                    .withLayout(
                            PatternLayout.newBuilder()
                                    .withPattern(PATTERN_LAYOUT)
                                    .withConfiguration(this)
                                    .build())
                    .build();
        }
        private LoggerConfig getLogger(String loggerName, Level level) {
            //System.out.println("in logger for rolling");
            return LoggerConfig.createLogger(false, level,
                    loggerName, null, new AppenderRef[]{}, null, this, null);
        }
    }
}

В мавене все зависимости проставлены

Структура проекта

Класс конфигурации точно инициализируется(добавил внутрь несколько SOUT)

Работаю на Mac OS(на всякий случай ибо причину ищу очень долго)

READ ALSO
Сохранение звука с google translate

Сохранение звука с google translate

В гугла есть апи для работы с переводчиком (https://translategoogle

211
Как изменить ресурсы класса

Как изменить ресурсы класса

У меня есть настройки в виде txt файла, этот txt файл будет находится в jar архиве

202
Критическая ошибка Android 7.0

Критическая ошибка Android 7.0

ЗдравствуйтеСегодня получил отчет от Firebase Crash Reporting и это уже второй такой отчет

223
На что влияет 1$ в следующей строке?

На что влияет 1$ в следующей строке?

В данном случае ни на что не влияет

164