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

logback在名称为当前日期的文件夹内创建日志文件

颜永怡
2023-03-14
问题内容

在我当前的项目中,我想按日期创建日志文件,即日志文件应驻留在
名称为date的文件夹中。归档也应在该特定文件夹中进行。

我正在使用的当前Appender看起来像这样(它会根据大小对日志文件进行归档)。

    <appender name="AUDITFILE"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${PROJECT_HOME}\\projectname\\audits\\myproject.log</file>
    <append>true</append>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${PROJECT_HOME}\\projectname\\audits\\myproject_%d{yyyy-MM-dd}.%i.zip
        </fileNamePattern>
        <maxHistory>10</maxHistory>
        <timeBasedFileNamingAndTriggeringPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10KB</maxFileSize>

        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
        <pattern>%date %msg%n
        </pattern>
    </encoder>
</appender>

问题答案:

如fileNamePattern的文档中所述,您可以指定多个%d标记,以便将日期放入归档文件名的文件夹名称中:

<fileNamePattern>${PROJECT_HOME}\\projectname\\audits\\%d{yyyy-MM, aux}\\myproject_%d{yyyy-MM-dd}.%i.zip</fileNamePattern>

请注意,只有一个%d令牌可以是主令牌,所有其他令牌必须通过传递’aux’参数标记为辅助令牌。

但是,如果您还想将其放入非归档文件名的文件名中,则有两个选择:

  1. 使用<timestamp />元素来设置您在路径中使用的变量。但是此时间戳记仅在启动时设置一次,因此它对于批处理运行很有用,但对服务而言却不是。

  2. 做像上述(1),但包裹<appender/><timestamp />SiftingAppender,这将使该时间戳来进行重新评估,如果使用的logback> = 1.0.12的版本。不确定要如何配置SiftingAppender。但是希望这将使您走上正确的道路。



 类似资料:
  • 我正在使用的当前appender如下所示(它根据大小对日志文件进行归档)。

  • 问题内容: 这个问题的一个子集此。我希望每天使用以下日志文​​件名格式创建一个日志文件: 使用,但根本不创建日志文件。 我的lo4j.xml看起来像这样: 问题答案: 直到午夜后的某个时间记录了第一条消息后,使用log4j附带的发货才重命名日志文件。 您可以尝试使用,可以从此处下载。与相反,它将创建日志文件,其文件名始终包含今天的日期。

  • 正如问题的标题所述,如果log4j2 File appender日志文件不存在,是否可以避免创建父文件夹?实际上,当我通过文件appender日志的不存在的父文件夹时,它将由log4j2自动创建。我已经尝试过查看标记上是否有属性,但什么都没有。 https://logging.apache.org/log4j/2.x/manual/appenders.html

  • 问题内容: 我想将log4j和log4net附加程序的日志文件名设置为具有当前日期。我们正在做每日翻转,但是当前的日志文件没有日期。日志文件名称格式为 有人知道我最好的方法吗? 编辑:我忘了提到我们也想在log4net中做到这一点。另外,任何解决方案都需要在JBoss中可用。 问题答案: DailyRollingFileAppender正是你要搜索的内容。

  • 我有几个可执行类,我想自动将日志文件名设置为正在执行的Java类的名称。 我知道我可以通过编程实现这一点,可能是使用反射和,但是通过配置? 对我来说,这似乎是一个相当基本的需求,所以我很惊讶我找不到关于它的文档。

  • 我目前正在创建一个系统,可以有模块(把它们看作插件),其中每一个都可以有自己的日志,专用的。 我想使用log4j2项目进行日志记录,但我似乎在文件附加符方面遇到了一些麻烦。 主项目(模块加载器和整个事情的“核心”)应该有自己的日志文件,而模块应该有自己的日志文件(像)。 即使搜索也没有给我提供任何接近的解决方案,我找到的只是xml配置中预定义的文件日志--这不是我想要的。 感谢你的阅读;即使是最轻