Не знайдено жодної заявки для реєстратора (log4j)?


368

Я поставив log4j на свій збірний шлях, але під час запуску програми я отримую таке повідомлення:

log4j:WARN No appenders could be found for logger (dao.hsqlmanager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Що означають ці попередження? Що тут придатника?


5
Це здається попередженням для виконання. Ви впевнені, що це бачите під час компіляції?
маба

5
Ви спробували відвідати URL-адресу в останньому рядку попереджень?
Джеспер

4
так!!! але це нічого не говорить ... Я дізнався, що мені потрібен файл властивостей для налаштування мого додатка!
maximus

Вручну редагуйте конфігураційні файли, щоб додати додаток. Переконайтеся, що у вас є правильний та дійсний документ конфігурації.
Роман C

Відповіді:


464

Цей короткий вступ до посібника log4j трохи старий, але все ще діє.

У цьому посібнику ви знайдете інформацію про те, як використовувати реєстратори та додатки.


Тільки для того, щоб рухатися, у вас є два простих підходи, які ви можете скористатися.

Перший - просто додати цей рядок до вашого основного методу:

BasicConfigurator.configure();

Другий підхід полягає в тому, щоб додати цей стандартний log4j.properties(узятий із вищезгаданого керівництва) файл на ваш classpath:

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

3
Просто перший крок - це нормально. Цитата з Короткого вступу до log4j guide
ray6080

65
Для нових спотикань упонів ... додайте файл log4j.properties в src / main / ресурси, і це передбачає, що у вас є проект Maven. Stuff в src / main / ресурси включені на класний шлях.
keni

3
У налаштуваннях ідеї IntelliJ відкрийте модуль і виберіть папку ресурсів та натисніть ресурси, вона автоматично додасть кожен ваш ресурс до класного шляху.
Waqas

1
Не допомогло. Я використовую Eclipse Neon для C ++, і я поставив log4j.properties поруч із виконуваним затемненням і не допоміг
Nadav B

log4j.rootLogger=DEBUG, A1це рядок, якого я весь час бракував.
Мохаммед Файсал

74

Схоже, вам потрібно додати розташування свого log4j.propertiesфайлу до Classpath в Eclipse.

Переконайтесь, що ваш проект відкрито в Eclipse, а потім натисніть на меню "Запустити" у верхній частині Eclipse та натисніть на наступне:

  1. Біжи
  2. Запустити конфігурації
  3. Classpath (вкладка)
  4. Записи користувачів
  5. Розширений (кнопка праворуч)
  6. Додати папки
  7. потім перейдіть до папки, яка містить ваш файл log4j.properties
  8. Застосувати
  9. Біжи

Повідомлення про помилку більше не повинно з’являтися.


Попереджувальні повідомлення зараз не з’являються, але все ж журнали не записуються у потрібному місці
Арпан Саїні

48

Швидке рішення:

  1. додати код до основної функції :

    String log4jConfPath = "/path/to/log4j.properties";
    PropertyConfigurator.configure(log4jConfPath);
  2. створити файл з іменем log4j.properties в / path / to

    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{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n

Помістіть файл log4j.properties всередині каталога ресурсів, як src / test / resource
Alok

Щоб уникнути явного оголошення маршруту log4j.properties; розмістіть його у папці свого проекту та отримайте доступ до нього, як String log4jConfPath = System.getProperty ("user.dir") + File.separator + "log4j.properties";
Амімо Бенджа

36

Це лише попередження.

Закріплення

Це відбувається, коли конфігураційні файли за замовчуванням log4j.propertiesі log4j.xmlїх неможливо знайти, і програма не виконує явної конфігурації.

Щоб виправити це, просто створювати / копіювати log4j.propertiesабо log4j.xmlв ваше місце на шляху до класів ( як правило , такі ж , як в банку файли).

За бажанням можна вказати варіант Java: -Dlog4j.configuration=file:///path/to/log4j.properties.

log4jвикористовує Thread.getContextClassLoader().getResource()для пошуку файлів конфігурації за замовчуванням і не перевіряє безпосередньо файлову систему. Знання відповідного місця для розміщення log4j.propertiesабо log4j.xmlвимагає розуміння стратегії пошуку використовуваного завантажувача класів. log4jне забезпечує конфігурацію за замовчуванням, оскільки вихід у консоль або у файлову систему може бути заборонений у деяких середовищах.

Налагодження

Для налагодження ви можете спробувати використовувати -Dlog4j.debug=trueпараметр.

Конфігурація log4j.properties

Зразок конфігурації log4j.properties:

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN

Ось ще один файл конфігурації, який використовує кілька додатків:

log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log

log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

Apache Solr

Якщо ви використовуєте Solr , скопіюйте <solr>/example/resources/log4j.propertiesв місце розташування на шляху .

Зразок конфігурації log4j.propertiesвід Solr виглядає так:

#  Logging level
solr.log=logs/
log4j.rootLogger=INFO, file, CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x \u2013 %m%n

#- size rotation with log cleanup.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=4MB
log4j.appender.file.MaxBackupIndex=9

#- File to log to and log format
log4j.appender.file.File=${solr.log}/solr.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n

log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop=WARN

# set to INFO to enable infostream log messages
log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF

Дивись також:


13

Більшість відповідей тут пропонують log4j.propertiesрозмістити файл у потрібному місці (для проекту Maven він має бути розташований у src/main/resources)

Але для мене проблема полягає в тому, що мій log4j.propertiesнеправильно налаштований. Ось зразок, який працює для мене, ви можете спробувати його спершу.

# Root logger option
log4j.rootLogger=INFO, stdout

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

1
Те, що log4j вважає "не в змозі знайти файл" та "неповний специфікація у файлі", є однією і тією ж помилкою, - це витрата часу.
Ед Норріс

1
Для мене це найкраща відповідь. Я голосую, і я додав кілька пояснень у вашу відповідь.
schlebe

Найкраща відповідь для мене !!!
nosequeweaponer

8

Як було пояснено раніше, існує два підходи

Перший - просто додати цей рядок до вашого основного методу:

BasicConfigurator.configure();

Другий підхід - додати цю стандартну властивості log4j.properties файл до вашого classpath:

Використовуючи другий підхід, вам потрібно переконатися, що файл ініціалізується належним чином, наприклад.

Properties props = new Properties();
props.load(new FileInputStream("log4j property file path"));
props.setProperty("log4j.appender.File.File", "Folder where you want to store log files/" + "File Name");

Переконайтеся, що ви створили необхідну папку для зберігання файлів журналів.


У мене була така ж проблема, і я використовував BasicConfigurator.configure (); в основному методі, і тепер код виконується належним чином.
Сурабхі Панді

7

Ви використовуєте Loggerкод у своєму коді для реєстрації повідомлення. AppenderЄ об'єкт додається до Loggerзаписати повідомлення для певної мети. Є FileAppenderдля запису в текстові файли або ConsoleAppenderдля консолі. Щоб отримати додаткову допомогу, потрібно показати свій код налаштування Logger and Appender.

будь ласка, прочитайте підручник для кращого розуміння взаємодії Logger та Appender.


6

Переконайтесь, що файл властивостей встановлено правильно. І знову ж таки, здається, що компілятор не може знайти файл властивостей, ви можете встановити наступний на пом (лише коли ви використовуєте проект maven).

<build>
       <sourceDirectory> src/main/java</sourceDirectory>
       <testSourceDirectory> src/test/java</testSourceDirectory>
        <resources>
             <resource>
                  <directory>resources</directory>
             </resource>
        </resources>           
</build >

Це! Я витратив години, щоб знайти відповідь. Мій випадок справи добре працює в Linux, але ця помилка є у Windows (той же NB IDE), і всі вищезазначені рішення не працюють!
Tiana987642

5

Я отримую ту ж помилку. Тут проблема, яка призводить до цього повідомлення про помилку:

Я створюю деякі об'єкти, які використовують Logger, перш ніж налаштувати log4j:

Logger.getLogger(Lang.class.getName()).debug("Loading language: " + filename);

Рішення: Налаштуйте log4j на початку в основному методі:

PropertyConfigurator.configure(xmlLog4JConfigFile); 
// or BasicConfigurator.configure(); if you dont have a config file

Дуже дякую!!! Усі просто припускають, що Spring або Tomcat, або що інше ініціалізувати конфігурацію.
Вінджазер

3

Я думаю, ви повинні зрозуміти, де шукається файл jar4j-файлу або код Java для файлів конфігурації log4j.

src/main/resources/log4j.propertiesце шлях затемнення. Розмістіть їх у належному місці, щоб вам не довелося жорстко кодувати абсолютний шлях у коді.

Прочитайте мою статтю та зразок рішення для цього http://askyourquestions.info/2016/03/27/how-to-see-where-the-log-is-logger-in-slf4j/


3

Ще одна причина, що може статися (в RCP4), полягає в тому, що ви використовуєте декілька каркасів реєстрації у вашому цільовому файлі. Як приклад, це станеться, якщо ви використовуєте комбінацію slf4j, log4j та ch.qos.logback.slf4j на вкладці вмісту цільових файлів.


3

Як перший код додайте наступне:

Properties prop = new Properties();
prop.setProperty("log4j.rootLogger", "WARN");
PropertyConfigurator.configure(prop);

2

У моєму випадку помилка полягала у прапорі " аддиктивність ". Якщо для вас "root" пакет проекту "false", то дочірні пакети не матимуть додатка, і ви побачите помилку " додаток не знайдено ".


2

Я зіткнувся з тією ж проблемою, коли спробував запустити тестовий клас JUnit.

Проблема вирішується після того, як я вручну додав файл log4j.properties у папку src / test / ресурси.

Додавши код нижче до файлу log4j.properties, це вирішило проблему:

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

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\logging.log
log4j.appender.file.MaxFileSize=10MB
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

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

1

Я зіткнувся з цією проблемою при спробі створити виконуваний jar з maven in intellij 12. Виявилося, що оскільки файл маніфесту Java не включає шлях класу, файл властивостей log4j не вдалося знайти на рівні кореня (де файл jar виконано з.)

FYI Я отримував лісоруб так:

Logger log = LogManager.getLogger(MyClassIWantedToLogFrom.class);

І мені вдалося змусити його працювати з файлом pom, який включав це:

         <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2-beta-5</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath> 
                        <mainClass>com.mycompany.mainPackage.mainClass</mainClass>
                    </manifest>
                    <manifestEntries>
                        <Class-Path>.</Class-Path> <!-- need to add current directory to classpath properties files can be found -->
                    </manifestEntries>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

1

Переконайтесь, що ваш проект відкрито в Eclipse, а потім натисніть на меню "Запустити" у верхній частині Eclipse та натисніть на наступне:

  1. Біжи

  2. Запустити конфігурації

  3. Classpath (вкладка)

  4. Записи користувачів

  5. додати банку справа

  6. додати файл jar4j jar

  7. Застосувати

  8. Біжи

Повідомлення про помилку більше не повинно з’являтися.


1

Причиною може бути відсутність слова staticв деяких:

final static Logger logging = Logger.getLogger(ProcessorTest.class);

Якщо я роблю реєстратор полем екземпляра, я отримую саме це дуже попередження:

No appenders could be found for logger (org.apache.kafka.producer.Sender)

Що ще гірше, попередження вказує не на те ProcessorTest, де помилка живе, а на абсолютно інший клас (Відправник) як джерело проблем. Цей клас має правильний реєстратор і не потребує змін! Ми могли шукати проблему протягом століть!


1

Я зіткнувся з тією ж проблемою, коли використовую log4j2. Моя проблема викликана використанням неправильно залежної бібліотеки:

<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <scope>runtime</scope>
    </dependency>

Натомість я повинен використовувати:

<dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <scope>runtime</scope>
    </dependency>

У моєму випадку у мене є log4j2.xml, визначений у моєму каталозі "ресурси", і вказано, щоб використовувати його:

System.setProperty("log4j.configurationFile", "log4j2.xml");

1

Log4J відображає це попереджувальне повідомлення під час пошуку коду Log4j Java для створення першого рядка журналу у вашій програмі.

На даний момент Log4j робить 2 речі

  1. це пошук, щоб знайти log4j.propertiesфайл
  2. це пошук, щоб інстанціювати визначити додаток у log4j.properties

Якщо файл log4Jне знайдений, log4j.propertiesабо якщо заявник, заявлений в ньому log4j.rootlogger, не визначено в іншому місці у log4j.propertiesфайлі, відображається попереджувальне повідомлення.

ОБЕРЕЖНО: вміст файлу властивостей повинен бути правильним.

Наступний вміст НЕ правильний

log4j.rootLogger=file

log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=c:/Trace/MsgStackLogging.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%m%n
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=false

тому що fileдодаток оголошено в log4j.rootloggerоператорі LOWER-CASE і визначається в операторі log4j.appender за допомогою UPPER-CASE!

Правильний файл був би

log4j.rootLogger=FILE

log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=c:/Trace/MsgStackLogging.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%m%n
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=false

Якщо використовується MAVEN, потрібно поставити файли log4j.properties у src/main/resourcesІ запустити збірку MAVEN.

Файл Log4j.properties копіюється у target/classesпапку.

Log4J використовуйте log4j.propertiesфайл, який він знайшов target/classes!


1

У мене теж була ця проблема. Я просто забув позначити каталог ресурсів в IntelliJ IDEA

  1. Клацніть правою кнопкою миші на своєму каталозі
  2. Позначити каталог як
  3. Корінь ресурсів

1

Якщо ви користуєтеся Eclipse, і ця проблема з'явилася з нізвідки після того, як все заздалегідь спрацювало нормально, спробуйте перейти Project - Clean - Clean.


0

Мої установки Eclipse не вдалося знайти log4j.propertiesпід час запуску тестів JUnit від Eclipse, навіть якщо файл розміщений за адресоюsrc/test/resources .

Причина полягала в тому, що Eclipse (або з'єднувач m2e ) не копіював вміст з src/test/resourcesочікуваної папки вихідних даних target/test-classes- першопричиною було те, що у властивостях проекту в розділі Java Build Path -> вкладка джерела -> папки джерел на шляху збірки -> src / тест / ресурси , якось був Excluded: **запис. Я видалив цей виключений запис.

З іншого боку , я міг би вручну скопіювати src/test/resources/log4j.propertiesна target/test-classes/log4j.properties.


0

Якщо log4j.propertiesце дійсно на класному шляху, ви використовуєте Spring Boot для створення файлу WAR для розгортання на сервері додатків, ви пропускаєте web.xmlфайл на користь автоконфігурації Spring Boot і не отримуєте жодних повідомлень журналу, вам потрібно явно налаштувати Log4j. Припустимо, що ви використовуєте Log4j 1.2.x:

public class AppConfig extends SpringBootServletInitializer {

    public static void main( String[] args ) {
        // Launch the application
        ConfigurableApplicationContext context = SpringApplication.run( AppConfig.class, args );
    }

    @Override
    protected SpringApplicationBuilder configure( SpringApplicationBuilder application ) {
        InputStream log4j = this.getClass().getClassLoader().getResourceAsStream("log4j.properties");
        PropertyConfigurator.configure(log4j);
        return application;
    }

// Other beans as required...
}

0

Можливо, додайте, що релевантний проект містить log4j в Java-шлях збірки, я додаю в нього mahout_h2o, коли я зустрів цю проблему в проекті mahout за допомогою eclipse, він працює!


0

якщо ви працюєте разом з багатьма проектами, ви можете зіткнутися зі стильовою проблемою.

* у вас повинен бути один файл lof4j.properties, і цей файл включає властивості журналу іншого проекту.

* Окрім того, ви можете спробувати помістити файли властивостей log4j у шлях src, коли проект працює Linux OS, файли інших проектів та файли log4.properties можуть знаходитись під однією папкою у місці на classpath.


0

Перший імпорт:

 import org.apache.log4j.PropertyConfigurator;

Потім додайте нижче код до основного методу:

String log4jConfPath ="path to/log4j.properties";
PropertyConfigurator.configure(log4jConfPath);

Створіть файл на шляху до і додайте до цього коду нижче.

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{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n

0

Рішення на цьому сайті працювало для мене https://crunchify.com/java-how-to-configure-log4j-logger-property-corправи/ . Зараз я зовсім не бачу попереджень від log4j

Я поміщую це у файл log4j.properties, який я вкладаю у src / main / ресурси

# This sets the global logging level and specifies the appenders
log4j.rootLogger=INFO, theConsoleAppender

# settings for the console appender
log4j.appender.theConsoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.theConsoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.theConsoleAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

0

Перш за все: Створіть файл log4j.properties

# Root logger option
log4j.rootLogger=INFO, stdout

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

Розмістіть його в src / main / ресурси /

Після цього використовуйте ці 2 залежності:

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

Необхідно додати цю кінцеву залежність до файлу POM:

<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.5.RELEASE</version>
        </dependency>

0

Розглянемо аргумент JVM log4j Dlog4j.configuration

В загальному:

Додайте аргумент JVM, який вказує на конфігураційний файл log4j. Синтаксис виглядає так:

java [ options ] -jar file.jar [ arguments ]

Зразок реального командного рядка виглядає наступним чином:

java -Dlog4j.configuration=conf/log4j.xml -jar myJarFile.jar myArg1 myArg2

Для користувачів IntelliJ IDE:

1.Run/Debug Configurations
2.Edit configurations...
3.VM options
4.Enter the same value also starting with "-D"

Поради:

1.Eclipse IDE користувачі знайдуть рівноцінний підхід

2.Для редактора конфігурації запуску / налагодження дуже ймовірно, що на початку часу вашого конкретного виконуваного файлу немає. Залежно від розміру проекту, над яким ви зараз працюєте, орієнтуватися в каталогах для його пошуку може бути неприємно. Менше клопоту, якщо просто запустити / виконати файл (натиснути відтворити) один раз, перш ніж приступити до запуску / налагодження конфігурації, незалежно від результату виконання.

3.Зверніть увагу на свою робочу директорію, відносні шляхи та класний шлях.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.