当前位置: 首页 > 面试题库 >

使用日期和时间戳记为每次运行创建log4j日志文件

须志新
2023-03-14
问题内容

全部,似乎这个问题被发布了多次,但我仍然没有针对我的问题的适当解决方案。

按照下面的属性文件,每次都会在其中带有日期的情况下创建一个新文件,但是我想创建以下格式的日志文件,并且每次执行我的应用程序时都需要生成该文件,

logFileName_MM_DD_YY-HH_MM_SS.log (或)logFileName.log_YYYY_MM_DD_HH_MM_SS

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

# 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

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=.\\logs\\AppLog.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
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

问题答案:

编辑-删除了DailyFileAppender建议。

您可以创建自己的FileAppender,如下所示:

public class NewFileOnRebootAppender extends FileAppender {

    public NewFileOnRebootAppender() {
    }

    @Override
    public void setFile(String file) {
        super.setFile(prependDate(file));
    }

    private static String prependDate(String filename) {
        return System.currentTimeMillis() + "_" + filename;
    }
}

并像这样使用它:

log4j.appender.fileOnReboot=yourPackage.NewFileOnRebootAppender
log4j.appender.fileOnReboot.File=appLogOnReboot.log
log4j.appender.fileOnReboot.layout=org.apache.log4j.PatternLayout
log4j.appender.fileOnReboot.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

该文件的命名并不完美,但是您可以理解。



 类似资料:
  • 问题内容: 我想在我的Java项目中使用Log4j,我应该在配置文件中提供该配置,该配置文件每天晚上12:00将生成一个新文件,并且文件名应类似于 -output- log-of-MyProjectName-HostName-2013-Dec-10。 txt 名称)。我的配置文件就是这样- 它每天都在创建新文件,但在文件名后附加日期。请帮我。提前致谢。 问题答案: 我认为您想要DailyRolli

  • 问题内容: 这是我的日志输出 我想要每个日志消息的时间戳,即 这是我的log4j配置文件 我该怎么做? 问题答案: 在您的PatternLayout中使用。 也可以采用格式模式,就像您可以选择所需的元素一样。如果省略格式模式,则日期将为ISO8601格式。

  • 我使用log4j进行日志记录,并且使用.log格式的所有日志文件,其结构简单,如; log4j.rootcategory=info,C,R log4j.appender.c=org.apache.log4j.consoleappender log4j.appender.c.layout=org.apache.log4j.patternlayout log4j.appender.r.layout=o

  • DailyRollingFileAppender没有创建每日备份日志文件。 我正在使用下面的配置,它在我的本地机器上工作,但在部署项目的机器上不工作。 框架——SpringMVC 我无法理解配置的哪个部分正在阻塞DailRollingFileAppender,以便在我的服务器上创建日期日志。 编辑- 我根据建议更新了我的文件,但在第二天上午12点,它不会创建新的备份文件。意味着它更新了AppLog

  • 问题内容: 我正在尝试配置log4j以将消息记录到文件中。现在,确实使用我提供的名称创建了该文件,但是日志未写入该文件。我的代码: 我文件的内容: 运行此命令时,将在控制台中获得以下输出: 该文件确实在我的主目录中创建。但是它是空的。 有什么想法我做错了吗?我正在使用log4j 1.2.17版。 问题答案: 输出似乎是Java标准日志记录框架(JUL)发出的默认格式。 因此,有两种可能性(想到):

  • 我知道有自动插入的字段(例如updated_at和created_at),但我想知道是否有像雄辩的方法时间戳()或Laravel的方式来产生时间戳? 例如,我希望在用户每次登录到我的系统时记录一个时间戳,并将其存储到数据库中,这样我们就可以看到每个用户的上次登录日期和时间详细信息。