繁体   English   中英

log4j2仅记录到控制台

[英]log4j2 logging to console only

我有一个需要记录的Maven Web项目。

我决定为此使用log4j2并将必需的条目添加到pom.xml文件中

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

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <RollingFile name="RollingFile" fileName="${logs.path}/text.log"
            filePattern="${logs.path}/%d{YYYYMMdd}-text.%i.log">
            <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
            <Policies>
                <SizeBasedTriggeringPolicy size="100 MB" />
            </Policies>
            <DefaultRolloverStrategy max="20" />
        </RollingFile>

        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} %-5p %c{1}:%L - %msg%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="root" level="info" additivity="false">
            <appender-ref ref="RollingFile" level="info" />
            <appender-ref ref="Console" level="info" />
        </Logger>
        <Root level="info" additivity="false">
            <AppenderRef ref="RollingFile" />
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>

我从-Dlogs.path="C:\\mylogs"开始安装tomcat,其中C:\\mylogs存在并且具有公共读/写访问权限。

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

我想念什么? 我需要做一些其他配置才能登录到文件吗?

要使用log4j2配置创建日志文件,首先需要定义您的附加程序。 这是一个例子:

<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>

之后,您只需要定义一个将使用它的记录器:

<Logger name="the package or name that is displayed in the log line"
            level="ALL"
            additivity="false">
      <AppenderRef ref="MGMT"/>
    </Logger>

如果您有一个以com.company.test作为包的日志,则将该包设置为记录器的名称。 它们的匹配很重要。

字段可additivity将定义您要将捕获的日志传递给其父级(true)还是让此记录程序处理它(false)

编辑:

您的配置文件可能需要以下内容:

<Configuration status="info">
  <Properties>
    <Property name="logdir">${sys:catalina.base}/logs</Property>
    <Property name="layout">%d [%t] %-5p %c- %m%n</Property>
  </Properties>
  <Appenders>

如果您不想使用它,则必须定义静态路径,例如<RollingFile name="MGMT" fileName="C:\\path\\file.log"

我浏览了文档 您必须使用sys:来引用系统属性,并且似乎tomcat属性被视为系统属性,因此我用${sys:logs.path}替换了${logs.path} ${sys:logs.path}并成功了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM