Поиск…


Вступление

Apache Log4j - это утилита ведения журнала на основе Java, это одна из нескольких фреймворков регистрации Java. В этом разделе показано, как настроить и настроить Log4j на Java с подробными примерами по всем возможным аспектам использования.

Синтаксис

  • Logger.debug («текст для журнала»); // Регистрация информации об отладке
  • Logger.info («текст для регистрации»); // Регистрация общей информации
  • Logger.error («текст для регистрации»); // Запись информации об ошибке
  • Logger.warn («текст для регистрации»); // Предупреждения о регистрации
  • Logger.trace («текст для регистрации»); // Запись информации о трассировке
  • Logger.fatal («текст для регистрации»); // Регистрация фатальных ошибок
  • Использование Log4j2 с протоколированием параметров:
  • Logger.debug («Debug params {} {} {}", param1, param2, param3); // Регистрация отладки с параметрами
  • Logger.info («Info params {} {} {}", param1, param2, param3); // Запись информации с параметрами
  • Logger.error («Параметры ошибки {} {} {}", param1, param2, param3); // Ошибка регистрации с параметрами
  • Logger.warn ("Warn params {} {} {}", param1, param2, param3); // Запись предупреждений с параметрами
  • Logger.trace («Параметры трассировки {} {} {}", param1, param2, param3); // Ведение журнала с параметрами
  • Logger.fatal («Фатальные параметры {} {} {}", param1, param2, param3); // Регистрация фатальных данных с параметрами
  • Logger.error («Caught Exception:», ex); // Исключение журнала с сообщением и stacktrace (будет автоматически добавлено)

замечания

Конец жизни для Log4j 1 достигнут

5 августа 2015 года Комитет по управлению проектами в области лесозаготовок объявил, что Log4j 1.x достигло конца жизни. Полный текст объявления можно найти в блоге Apache. Пользователям Log4j 1 рекомендуется обновить до Apache Log4j 2 .

От: http://logging.apache.org/log4j/1.2/

Как получить Log4j

Текущая версия (log4j2)

Использование Maven:
Добавьте в свой файл POM.xml следующую зависимость:

<dependencies>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.6.2</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.6.2</version>
  </dependency>
</dependencies>

Использование Айви:

<dependencies>
  <dependency org="org.apache.logging.log4j" name="log4j-api" rev="2.6.2" />
  <dependency org="org.apache.logging.log4j" name="log4j-core" rev="2.6.2" />
</dependencies>

Использование Gradle:

dependencies {
  compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.6.2'
  compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.6.2'
}

Получение log4j 1.x


Примечание: Log4j 1.x достигло конца жизни (EOL) (см. Примечания).


Использование Maven:

Объявите эту зависимость в файле POM.xml :

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

Использование Айви:

<dependency org="log4j" name="log4j" rev="1.2.17"/>

Usign Gradle:

compile group: 'log4j', name: 'log4j', version: '1.2.17'

Использование Buildr:

'log4j:log4j:jar:1.2.17'

Добавление вручную в сборку пути:

Загрузить с веб-сайта проекта Log4j

Как использовать Log4j в Java-коде

Сначала необходимо создать final static logger объект final static logger :

final static Logger logger = Logger.getLogger(classname.class);

Затем вызовите методы ведения журнала:

//logs an error message
logger.info("Information about some param: " + parameter); // Note that this line could throw a NullPointerException!

//in order to improve performance, it is advised to use the `isXXXEnabled()` Methods
if( logger.isInfoEnabled() ){
    logger.info("Information about some param: " + parameter);
}

// In log4j2 parameter substitution is preferable due to readability and performance
// The parameter substitution only takes place if info level is active which obsoletes the use of isXXXEnabled().
logger.info("Information about some param: {}" , parameter);

//logs an exception
logger.error("Information about some error: ", exception);

Настройка файла свойств

Log4j дает вам возможность записывать данные в консоль и файл одновременно. Создайте файл log4j.properties и вставьте эту базовую конфигурацию:

# Root logger option
log4j.rootLogger=DEBUG, stdout, file

# Redirect log messages to console
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{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\log4j-application.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Если вы используете maven, поместите этот файл свойства в путь:

/ProjectFolder/src/java/resources

Базовый файл конфигурации log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Appenders>
    <Console name="STDOUT" target="SYSTEM_OUT">
      <PatternLayout pattern="%d %-5p [%t] %C{2} %m%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="debug">
      <AppenderRef ref="STDOUT"/>
    </Root>
  </Loggers>
</Configuration>

Это базовая конфигурация log4j2.xml с консольным приложением и корневым регистратором. В макете шаблона указывается, какой шаблон следует использовать для регистрации операторов.
Чтобы отладить загрузку log4j2.xml, вы можете добавить status = <WARN | DEBUG | ERROR | FATAL | TRACE | INFO> атрибута status = <WARN | DEBUG | ERROR | FATAL | TRACE | INFO> в теге конфигурации вашего log4j2.xml.
Вы также можете добавить интервал монитора, чтобы он снова загрузил конфигурацию после указанного интервала времени. Интервал мониторинга может быть добавлен в тег конфигурации следующим образом: monitorInterval = 30 . Это означает, что конфигурация будет загружаться каждые 30 секунд.

Миграция с log4j 1.x на 2.x

Если вы хотите перенести из существующего log4j 1.x в свой проект на log4j 2.x, удалите все существующие зависимости log4j 1.x и добавьте следующую зависимость:

Log4j 1.x API Bridge

Maven Build

<dependencies>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-1.2-api</artifactId>
    <version>2.6.2</version>
  </dependency>
</dependencies>

Ivy Build

<dependencies>
  <dependency org="org.apache.logging.log4j" name="log4j-1.2-api" rev="2.6.2" />
</dependencies>

Gradle Build

dependencies {
  compile group: 'org.apache.logging.log4j', name: 'log4j-1.2-api', version: '2.6.2'
}

Мост ведения журнала Apache Commons Если ваш проект использует журнал регистрации Apache, который использует log4j 1.x, и вы хотите перенести его на log4j 2.x, то добавьте следующие зависимости:

Maven Build

<dependencies>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-jcl</artifactId>
    <version>2.6.2</version>
  </dependency>
</dependencies>

Ivy Build

<dependencies>
  <dependency org="org.apache.logging.log4j" name="log4j-jcl" rev="2.6.2" />
</dependencies>

Gradle Build

dependencies {
  compile group: 'org.apache.logging.log4j', name: 'log4j-jcl', version: '2.6.2'
}

Примечание. Не удаляйте никаких существующих зависимостей записи в архивах Apache

Ссылка: https://logging.apache.org/log4j/2.x/maven-artifacts.html

Свойства-Файл для входа в БД

Для этого примера вам понадобится драйвер JDBC, совместимый с системой, в которой работает база данных. С открытым исходным кодом, который позволяет подключаться к базам данных DB2 в системе IBM, можно найти здесь: JT400

Несмотря на то, что этот пример специфичен для DB2, он работает практически для любой другой системы, если вы меняете драйвер и адаптируете URL JDBC.

# Root logger option
log4j.rootLogger= ERROR, DB

# Redirect log messages to a DB2
# Define the DB appender   
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender

# Set JDBC URL (!!! adapt to your target system !!!)
log4j.appender.DB.URL=jdbc:as400://10.10.10.1:446/DATABASENAME;naming=system;errors=full;

# Set Database Driver (!!! adapt to your target system !!!)
log4j.appender.DB.driver=com.ibm.as400.access.AS400JDBCDriver

# Set database user name and password
log4j.appender.DB.user=USER
log4j.appender.DB.password=PASSWORD

# Set the SQL statement to be executed.
log4j.appender.DB.sql=INSERT INTO DB.TABLENAME VALUES('%d{yyyy-MM-dd}','%d{HH:mm:ss}','%C','%p','%m')

# Define the layout for file appender
log4j.appender.DB.layout=org.apache.log4j.PatternLayout

Выйти из фильтра по уровню (log4j 1.x)

Вы можете использовать фильтр для регистрации только сообщений «ниже», чем, например, уровень ERROR . Но фильтр не поддерживается PropertyConfigurator. Поэтому вы должны перейти на конфигурацию XML, чтобы использовать его . См. Log4j-Wiki об фильтрах .

Пример "конкретный уровень"

<appender name="info-out" class="org.apache.log4j.FileAppender"> 
            <param name="File" value="info.log"/> 
            <layout class="org.apache.log4j.PatternLayout"> 
                    <param name="ConversionPattern" value="%m%n"/> 
            </layout> 
            <filter class="org.apache.log4j.varia.LevelMatchFilter">
                    <param name="LevelToMatch" value="info" />
                    <param name="AcceptOnMatch" value="true"/>
            </filter>
            <filter class="org.apache.log4j.varia.DenyAllFilter" />
</appender> 

Или "Диапазон уровней"

<appender name="info-out" class="org.apache.log4j.FileAppender"> 
            <param name="File" value="info.log"/> 
            <layout class="org.apache.log4j.PatternLayout"> 
                    <param name="ConversionPattern" value="%m%n"/> 
            </layout> 
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                    <param name="LevelMax" value="info"/>
                    <param name="LevelMin" value="info"/>
                    <param name="AcceptOnMatch" value="true"/>
            </filter>
</appender>


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow