Java log4j2仅记录到控制台

Java log4j2仅记录到控制台,java,log4j2,rollingfileappender,Java,Log4j2,Rollingfileappender,我有一个需要日志记录的maven web项目 为此,我决定使用log4j2,并在pom.xml文件中添加了所需的条目 然后我创建了log4j2.xml文件: 我用-Dlogs.path=“C:\mylogs”启动tomcat,其中C:\mylogs存在并具有公共读/写访问权限 控制台记录器工作正常,我可以在控制台中看到正确的输出,问题是没有创建文件,所以我没有日志文件,所有内容都只记录到catalina.out,tomcat启动日志没有显示log4j的错误 我错过了什么?要登录到文件,我还需

我有一个需要日志记录的maven web项目

为此,我决定使用log4j2,并在
pom.xml
文件中添加了所需的条目

然后我创建了
log4j2.xml
文件:


我用
-Dlogs.path=“C:\mylogs”
启动tomcat,其中
C:\mylogs
存在并具有公共读/写访问权限

控制台记录器工作正常,我可以在控制台中看到正确的输出,问题是没有创建文件,所以我没有日志文件,所有内容都只记录到catalina.out,tomcat启动日志没有显示log4j的错误


我错过了什么?要登录到文件,我还需要进行一些其他配置吗?

要使用log4j2配置创建日志文件,首先需要定义appender。下面是一个例子:

<RollingFile name="MGMT"
                 fileName="${logdir}/mgmt.log"
                 filePattern="${logdir}/mgmt.%d{yyyy-MM-dd}.log">
      <PatternLayout pattern="${layout}"/>
      <CronTriggeringPolicy schedule="0 0 0 * * ?"/>
      <DefaultRolloverStrategy>
        <Delete basePath="${logdir}" maxDepth="1">
          <IfFileName glob="mgmt.*.log" />
          <IfAccumulatedFileCount exceeds="10" />
        </Delete>
      </DefaultRolloverStrategy>
    </RollingFile>

如果你不想使用它,你必须定义静态路径,就像我通过。您必须使用
sys:
引用系统属性,而且tomcat属性似乎被视为系统属性,所以我将
${logs.path}
替换为
${sys:logs.path}
,它工作了。

@反斜杠,您是说您的日志中有根吗?如果我有这样的日志行:
2017-06-06 15:16:14997[Thread-6]DEBUG ProcessUtils-启动进程:[checkState.cmd]
我必须添加
我有一个根级别的日志记录器,它应该记录所有内容,而不管包/类名是什么。@反斜杠现在我知道问题出在哪里了。您是定义了属性还是删除了它们?我将编辑我的答案,请验证我没有定义属性,我没有使用它们,所以我没有定义它们。我使用的唯一属性是
${logs.path}
,这是一个tomcat属性,应该对log4j也可用。
<Logger name="the package or name that is displayed in the log line"
            level="ALL"
            additivity="false">
      <AppenderRef ref="MGMT"/>
    </Logger>
<Configuration status="info">
  <Properties>
    <Property name="logdir">${sys:catalina.base}/logs</Property>
    <Property name="layout">%d [%t] %-5p %c- %m%n</Property>
  </Properties>
  <Appenders>