Java log4j logger не создает файлы журнала - PullRequest
0 голосов
/ 10 января 2020

Я написал маленького бота для телеграмм на основе java. Также я подключил регистратор (библиотека log4j) для регистрации действий бота.

После перезапуска сервера cron автоматически выполняет jar-файл бота с помощью этой команды:

@ reboot sleep 5 && java -jar / var / blablabla / praetorian19-1.0-jar-with-dependencies.jar

В этом случае logger не создает никаких файлов журнала.

Но, если я запускаю бота непосредственно под root с одной и той же командой все работает хорошо. Я вижу новые файлы журналов, и они корректно обновляются.

Каталог и файл бота имеют рекурсивные правила 777.

Есть идеи, в какую сторону я должен копать?

log4j properties :

# Уровень логирования
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- %m%n

# Апендер для работы с файлами
log4j.appender.file=org.apache.log4j.RollingFileAppender
# Путь где будет создаваться лог файл
log4j.appender.file.File=log_file.log
# Указываем максимальный размер файла с логами
log4j.appender.file.MaxFileSize=200MB
# Конфигурируем шаблон вывода логов в файл
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

log4j2. xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">

    <!-- Author:  Crunchify.com  -->
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
        </Console>

        <RollingFile name="RollingFile" filename="log_file.log"
                     filepattern="${logPath}/%d{YYYYMMddHHmmss}-.log">
            <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
            <Policies>
                <SizeBasedTriggeringPolicy size="100 MB" />
            </Policies>
            <DefaultRolloverStrategy max="20" />
        </RollingFile>

    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console" />
            <AppenderRef ref="RollingFile" />
        </Root>
    </Loggers>
</Configuration>

Ответы [ 2 ]

0 голосов
/ 13 января 2020

Именно эта строка в задаче crontab помогла мне сохранить логи в файле: @reboot sleep 5 && java -jar /var/blabla/praetorian19-1.0-jar-with-dependencies.jar> / var / blabla / botlog .log

0 голосов
/ 10 января 2020

Есть идеи, в какую сторону я должен копать?

Возможно, это проблема с правами доступа к файлам или каталогам ... или что-то подобное. Чтобы решить эту проблему, следуйте рекомендациям в FAQ по Log4j на «Как отладить мою конфигурацию» :

  1. Убедитесь, что у вас есть правильные файлы JAR на пути к классам
  2. Включите внутреннее ведение журнала Log4j (согласно инструкциям) и посмотрите, что он делает.

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

...