【问题标题】:how to create log file under project base directory using log4j2如何使用 log4j2 在项目基目录下创建日志文件
【发布时间】:2020-09-09 01:41:41
【问题描述】:

我想在项目基础目录下的 maven 项目中创建日志文件。我使用 log4j2 框架将 log4j2.xml 文件保存在 src/mian/resources 文件夹下。下面是文件。请更新其中的错误。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns:xi="http://www.w3.org/2001/XInclude"
   packages="com.viveo.rtcc.common.client.traces" status="WARN">
       <Properties>
             <Property name="log-path">appLogs</Property>

       </Properties>
       <Appenders>
                 <Console name="Console" target="SYSTEM_OUT">
                    <!-- <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} 
                      - %msg%n"/> -->
                    <PatternLayout pattern="[ %d ] %p %t %c : %m%n" />
            </Console>
            <RollingFile name="rollingFileAppender"
                fileName="${log-path}/reLog.log"
                filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
                    <PatternLayout>
                          <Pattern>%d [%t] %p %c - %m%n</Pattern>
                    </PatternLayout>
                    <Policies>
                          <!-- <OnStartupTriggeringPolicy /> <TimeBasedTriggeringPolicy /> -->
                          <SizeBasedTriggeringPolicy size="10000 KB" />
                    </Policies>
                    <DefaultRolloverStrategy max="20" />
             </RollingFile>
             <MessageAreaAppender name="MessageAreaAppender" />
       </Appenders>
       <Loggers>
             <!-- <Root level="DEBUG"> <AppenderRef ref="RollingFileAppender" /> <AppenderRef 
                ref="Console" />
 <AppenderRef ref="MessageAreaAppender" /> </Root> -->


             <Logger name="com.yourloggername" level="debug"
                additivity="false">
                    <!-- <AppenderRef ref="ConsoleAppender" /> -->
                    <AppenderRef ref="rollingFileAppender" />
             </Logger>

             <Root level="info">
                    <!-- <AppenderRef ref="ConsoleAppender" /> -->
                    <AppenderRef ref="rollingFileAppender" />
             </Root>
       </Loggers>
</Configuration>

【问题讨论】:

    标签: log4j log4j2 appender rollingfileappender


    【解决方案1】:

    这是我在您的配置中看到的错误:

    1. Maven 构建运行时将工作目录设置为项目的根目录。创建的任何文件都将与之相关。在您的配置中,这意味着它将在名为 appLogs 的目录中创建日志。这是 Maven 构建中的不良做法。您应该将其更改为 target/applogs。
    2. 您的 filePattern 包含 %d{dMM-dd-yy} 但您的所有触发策略都不是基于时间的。如果没有基于时间的触发器,我希望在应用程序运行时该时间永远不会改变。

    【讨论】:

    • 您好,很遗憾,没有一个解决方案能够奏效。这是更改后更新的 log4j2.xml。我将 xml 更改为如下 target/appLogs
    • 我突然想到你把 log4j2.xml 放在了 src/main/resources 目录下。当我第一次读到这篇文章时,我以为您正在尝试使用它进行测试。再读一遍我不知道为什么我会这么想。如果您尝试将 log4j2.xml 与您的应用程序打包,那么 applogs 的原始日志路径将创建该目录并将日志文件写入那里。该目录将在您启动应用程序的任何目录中创建。如果这不起作用。将 status="DEBUG" 添加到 Configuration 元素并查看是否提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-11-09
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    相关资源
    最近更新 更多