Log4j 配置:如何每天创建一个新文件夹?

发布于 2024-10-06 02:16:18 字数 1126 浏览 0 评论 0原文

因此,我们使用 Log4j 的 DailyRollingFileAppender 来创建日志文件。这真的很棒,因为它可以每天或每小时创建一个新文件。我们希望附加程序根据日期创建一个新文件夹,然后根据小时创建新的日志文件。这可能吗?

这是我们当前的配置...当前设置为将所有日志文件(每小时创建)转储到 someFolder 中。我想我们可以在“文件”参数中做一些奇特的事情来完成我们想要的事情:

    <appender name="PlainFileAppender" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="someFolder/someFileName_plain.log" />
        <param name="DatePattern" value=".yyyy-MM-dd-HH" />
            <param name="ImmediateFlush" value="true" />
            <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                value="%d %-5p [%t] %c{1}: %m%n" />
        </layout> 
            <filter class="com.trgr.cobalt.infrastructure.logging.ClassFilter">
                <param name="classNameFilter" value="com.trgr.cobalt.infrastructure.logging.LogRecord" />
                <param name="acceptOnMatch" value="false" /> 
                <param name="neutrality" value="true" />
            </filter>
    </appender>

So, we are using Log4j's DailyRollingFileAppender to create our log files. This is really nice as it can create a new file for each day or hour. We'd like the appender to create a new folder based on the day, then new log files based on the hour. Is this possible?

Here is our current configuration... currently set up to dump ALL log files (created hourly) into someFolder. I'd guess we can do something fancy in the "File" param to do what we want:

    <appender name="PlainFileAppender" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="someFolder/someFileName_plain.log" />
        <param name="DatePattern" value=".yyyy-MM-dd-HH" />
            <param name="ImmediateFlush" value="true" />
            <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                value="%d %-5p [%t] %c{1}: %m%n" />
        </layout> 
            <filter class="com.trgr.cobalt.infrastructure.logging.ClassFilter">
                <param name="classNameFilter" value="com.trgr.cobalt.infrastructure.logging.LogRecord" />
                <param name="acceptOnMatch" value="false" /> 
                <param name="neutrality" value="true" />
            </filter>
    </appender>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

从来不烧饼 2024-10-13 02:16:18

对于该附加程序来说这是不可能的,因为它总是将日期附加到指定的文件名(因此您无法指定一些特殊的文件名来实现您的结果)并且不会创建丢失的目录,即使您指定一些奇特的日期模式也是如此。

因此,您可以自己编写一个附加程序,或者在某处找到这样的自定义 log4j 附加程序。 Log4j 的后继者 logback 就有这样一个 Appender

This is not possible with that appender, since it always appends the date to the specified filename (so you cannot specify some special filename to achieve your result) and does not create missing directories, even if you specify some fancy date pattern.

So you may write an appender on your own or find such a custom log4j appender somewhere. Log4j's successor, logback, has such an appender.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文