Java log4j2仅记录到控制台
我有一个需要日志记录的maven web项目 为此,我决定使用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的错误 我错过了什么?要登录到文件,我还需
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>