java - Log4j 记录到文件和控制台

标签 java logging log4j rollingfileappender consoleappender

我正在使用 Log4j/log4j extras 来记录日志。配置如下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
xmlns:log4j='http://jakarta.apache.org/log4j/'>

<appender name="fileAppender" class="org.apache.log4j.rolling.RollingFileAppender">
    <param name="append" value="true" />

    <rollingPolicy class="org.apache.log4j.rolling.FixedWindowRollingPolicy">
      <param name="minIndex" value="1"/>
      <param name="maxIndex" value="10"/>
      <param name="FileNamePattern" value="/appserver/Logs/Logs1/log.%i.gz"/>

</rollingPolicy>
 <triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
    <param name="maxFileSize" value="1000000000"/><!-- 1GB -->
</triggeringPolicy>
    <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%d{dd MMM yy HH:mm:ss:SSS}] [%p] - [%t %l]- %m%n" />
    </layout>

</appender>
<!--disable logging from the library Jars -->
<category name="org.apache.velocity">
    <priority value="off" />
</category>

<category name="com.someting.www">
    <priority value="off" />
</category>
<category name="org.apache">
    <priority value="off" />
</category>

<root>
    <level value="DEBUG" />
    <appender-ref ref="fileAppender" />
</root>
</log4j:configuration>

我期望日志仅出现在文件中,但我得到的日志同时写入文件和控制台中。 请提出更改建议以获得预期结果。

最佳答案

我在我的新项目中使用 log4j2。我在文件和控制台中都写入了日志。 这是我的 log4j2.xml:

<properties>
    <property name="logPath">/opt/weego_main/logs</property>
</properties>

<Appenders>
    <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n"/>
    </Console>

    <RollingFile name="RollingFile" filename="${logPath}/weego_main.log"
                 filepattern="${logPath}/$${date:yyyy-MM}/weego_main-%d{yyyy-MM-dd}-%i.log.gz">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n"/>
        <Policies>
            <TimeBasedTriggeringPolicy/>
            <SizeBasedTriggeringPolicy size="20 MB"/>
        </Policies>
    </RollingFile>
</Appenders>

<Loggers>
    <Root level="info">
        <AppenderRef ref="Console"/>
        <AppenderRef ref="RollingFile"/>
    </Root>
</Loggers>

我认为您应该创建名为 Console 的 Appenders 节点并将其添加到 Root 节点。

关于java - Log4j 记录到文件和控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36124390/

相关文章:

java - 如何在 Activity onPause 时停止线程?

c++ - 在 C++ 中打开/关闭我自己的日志(cout)打印——怎么做?有什么特别的选择吗?

java 网站 : how to redirect stacktrace of uncaught exception to a log file?

java - JDK 9 是否应该不允许在覆盖方法中引用最终字段的 Lambda 表达式实例化?

java - 如何每隔设定次数打印警告(Java)

java - 如何使用 log4j2 在滚动日志文件名中包含 UNIX 时间戳?

c# - 记录类名和方法名的最有效方法是什么?

java - 是否可以有 2 个文件替代 log4j,每次打开时使用?

java - Apache log4j 和 Tomcat 7 DEBUG 相关日志只登录到 "catalina.log"而不是只登录到 catalina.YYYY-mm-dd.log 文件

java - Libgdx 游戏在重启时越来越慢