log4j.properties не влияет на регистрацию в ActiveJDBC.

В настоящее время я работаю над простым веб-приложением, используя javalite webactive и activeJDBC. Чтобы начать с javalite, я просто использовал https://github.com/javalite/activeweb-simple/ и расширяется оттуда.

Одна вещь, которую я хотел бы изменить, теперь, когда я уже реализовал несколько контроллеров и моделей, я хочу настроить регистратор:

[qtp1442407170-13] INFO org.javalite.activeweb.RequestDispatcher - {"controller":"app.controllers.HomeController","duration_millis":685,"remote_ip":"0:0:0:0:0:0:0:1","method":"GET","action":"index","url":"http://localhost:8080/home/index","status":200}.

Я действительно не понимаю, что представляет собой префикс, поэтому я хотел бы изменить эту часть, чтобы показать дату и временные метки.

После http://javalite.io/logging#log4j-configuration я смогу настроить ведение журнала через log4j.properties в src/main/resources, но это, похоже, не имеет никакого значения.

Содержимое файлов:

log4j.rootLogger=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %4p %c{1} - %m%n

Я подозреваю, что я каким-то образом перезаписал регистратор по умолчанию, хотя ничего не менял в файлах pom.xml или Main.java.

Я что-то упустил или может быть, что изменения как-то перезаписываются?


person spranger    schedule 29.12.2018    source источник


Ответы (1)


вот метод, который я использовал во всех своих проектах JavaLite ActiveWeb. Требования:

  1. Я хочу войти в консоль во время разработки - для удобства.
  2. Я хочу войти в файл в любой другой среде
  3. Я хочу, чтобы мой файл журнала имел формат JSON, потому что я могу анализировать его в Splunk, ElasticSearch или любом другом подобном инструменте.

Итак, я дополнил ActiveWeb этим коммит.

Давайте сделаем это шаг за шагом:

  1. Добавьте свойство в файл pom <logger-name>CONSOLE</logger-name>
  2. Добавьте файл log4j.properties со следующим содержимым:

```

log4j.rootLogger=INFO, ${logger-name}
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d %4p [%t]: %c{1} - %m%n

log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.File=logs/activeweb-simple.log
log4j.appender.FILE.Append=true
log4j.appender.FILE.Encoding=UTF-8
log4j.appender.FILE.layout=org.javalite.logging.JsonLog4jLayout

```

  1. Добавьте зависимость SLF4J, чтобы интегрировать ее с Log4J:

```

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-log4j12</artifactId>
   <version>1.7.5</version>
</dependency>

```

  1. Добавьте профиль в pom:

<profiles> <profile> <id>file_log</id> <properties> <logger-name>FILE</logger-name> </properties> </profile> </profiles>

  1. Добавьте фильтрацию свойств в pom:

<resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources>

Давайте посмотрим, как это работает.

Когда вы запускаете программу в среде разработки без профиля, maven заменяет ${logger-name} в вашем файле log4j.properties на CONSOLE. Таким образом, вы используете регистратор CONSOLE, и все выводится на вашу консоль. Если вы запустите свою программу с профилем -Pfile_log, то ваш Maven заменит ${logger-name} на FILE, поэтому Log4J будет записываться в соответствующий файл.

Кроме того, обратите внимание, что макет консоли — org.apache.log4j.ConsoleAppender, а макет файла — org.javalite.logging.JsonLog4jLayout. org.javalite.logging.JsonLog4jLayout — это интеграция JavaLite с Log4J, созданная специально для интеграции с Log4J и создания вывода JSON.

Итак, как вы его используете? В среде разработки ничего особенного делать не нужно, все просто работает. Когда вам нужно его построить, запустите mvn package -Pfile_log -

person ipolevoy    schedule 30.12.2018
comment
Большое спасибо, так и получилось! - person spranger; 02.01.2019