Arhn - архитектура программирования

Android: получение дополнительного пустого файла при создании журналов с помощью log4j2

Я получаю дополнительный пустой файл, когда пытаюсь получить свои журналы из log4j2. Имя файла - "$(sys", и он не содержит абсолютно ничего, но создается каждый раз, когда я запускаю свою программу, вот мой java-файл, в котором я регистрируюсь:

public static void main(String[] args){

    Logger logger = LogManager.getLogger();

    final Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(System.currentTimeMillis());
    Date date = cal.getTime();
    int mHour = date.getHours();
    int mMinute = date.getMinutes();

    String filenameWE = String.valueOf(mHour) + "_" + String.valueOf(mMinute)+"_WarErr";
    String filenameFull = String.valueOf(mHour) + "_" + String.valueOf(mMinute)+"_Full_Log";

    System.setProperty("WarErrFilename", filenameWE);
    System.setProperty("FullLogFilename", filenameFull);

    LoggerContext ctx =  (LoggerContext) LogManager.getContext(false);
    ctx.reconfigure();

    logger.debug("Hello world - debug log");
    logger.debug("Hello world - debug log");
    logger.debug("Hello world - debug log");
    logger.info("Hello world - info log");
    logger.info("Hello world - info log");
    logger.info("Hello world - info log");

    logger.warn("Hello world - warn log");        
    logger.warn("I farted!");
    logger.error("Hello world - error log");
    logger.error("Error please insert brain!");
    logger.error("Error cant poop!");
}

И мой log4j2.xml

<?xml version="1.0" encoding="UTF-8"?><Configuration status="INFO">
<Appenders>
    <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    </Console>

    <File name="MyFile" fileName="logs/${date:yyyy}/${date:MM}/${date:dd}/${sys:WarErrFilename}.log" immediateFlush="false" append="false">
        <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
        <Filters>
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="NEUTRAL" />
            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="NEUTRAL" />
            <ThresholdFilter level="info" onMatch="DENY" onMismatch="DENY" />
        </Filters>
    </File>
    <File name="Technical"
          fileName="logs/${date:yyyy}/${date:MM}/${date:dd}/${sys:FullLogFilename}.log">
        <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
    </File>
</Appenders>

<Loggers>
    <Root level="debug">
        <AppenderRef ref="Console" />
        <AppenderRef ref="MyFile"/>
        <AppenderRef ref="Technical"/>
    </Root>
</Loggers>  
</Configuration>

  • Существуют ли оба файла журнала (MyFile и Technical)? Это поможет сузить вашу ошибку. 06.04.2016
  • Да, 2 файла существуют. Извините за поздний ответ 07.04.2016

Ответы:


1

В вашей конфигурации отсутствует внешний элемент <Configuration>, в который должны быть вложены ваши <Appenders> и <Loggers>. Посмотрите пример в руководстве.

Кроме того, почему бы не установить системные свойства перед получением Logger из LogManager?

06.04.2016
  • если вы внимательно посмотрите на код, который я предоставил, там есть элемент <Configuration> 07.04.2016
  • Ага, понятно. На моем телефоне он скрыт за элементом ‹?xml...?›. Но я не вижу закрывающий тег... 07.04.2016
  • это там, мне просто нужно отредактировать его, иначе он не скомпилируется и не даст никакого результата, не так ли? :) Исправлю в сек. 07.04.2016
  • Теперь все должно быть хорошо. 07.04.2016
  • Вы пытались установить необходимые системные свойства перед инициализацией Log4j, получив первый Logger из LogManager? Тогда вам не нужно перенастраивать. (Может быть ошибка в логике перенастройки...) 07.04.2016
  • О БОЖЕ!! Такое очевидное решение. Большое спасибо, чувак, ты прав! Мне нужно было инициализировать LogManager после реконфигурации. 07.04.2016
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..