【问题标题】:Java log4j logger doesn't create log filesJava log4j 记录器不创建日志文件
【发布时间】:2020-01-13 11:44:33
【问题描述】:

我写了一个基于 java 的小电报机器人。我还连接了记录器(log4j 库)以记录机器人活动。

在服务器重启 cron 后,使用此命令自动执行 bot jar-file:

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

在这种情况下,记录器不会创建任何日志文件。

但是,如果我直接在 root 下使用相同的命令启动 bot,一切正常。我看到了新的日志文件并且它们更新正确。

目录和bot文件递归有777条规则。

知道我必须挖哪一边吗?

log4j 属性:

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

【问题讨论】:

  • 代码在哪里?
  • 对不起。已经完成了
  • log4j2.xml 文件的相关性是什么?你用的是 log4j 还是 log4j2?

标签: java logging cron log4j bots


【解决方案1】:

知道我必须挖哪一边吗?

这可能是文件或目录权限的问题......或类似的东西。解决此问题的方法是遵循 "How do I debug my configuration" 上的 Log4j 常见问题解答中的建议:

  1. 检查类路径中是否有正确的 JAR 文件
  2. 启用 Log4j 内部日志记录(按照说明)并查看它在做什么。

除其他事项外,您还需要确定您实际使用了哪些日志记录配置。 (Log4j 不能同时使用它们...)

【讨论】:

    【解决方案2】:

    crontab 任务中的这个字符串帮助我将日志存储在文件中: @reboot sleep 5 && java -jar /var/blabla/praetorian19-1.0-jar-with-dependencies.jar > /var/blabla/botlog.log

    【讨论】:

      猜你喜欢
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      相关资源
      最近更新 更多