当前位置: 首页 > 知识库问答 >
问题:

log4j2.xml如何停止将日志打印到控制台而仍然将其写入文件?

蒯慈
2023-03-14

我对打印日志到控制台不感兴趣,只对文件感兴趣。我当前的log4j2.xml配置不支持这一点,除非我配置了'level=“off”',但它不同时写入文件和控制台。如何配置记录器只写入文件?

<?xml version="1.0" encoding="UTF-8" ?>
<Configuration>
    <Appenders>
        <RollingFile name="vertx_file" append="true"
            fileName="/var/log/vertx.log"
            filePattern="/var/log/vertx/$${date:yyyy-MM}/vertx-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{ISO8601} %-5p %c:%L - %m%n" />
            <Policies>
                <OnStartupTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="5MB" />
                <TimeBasedTriggeringPolicy />
            </Policies>
        </RollingFile>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <!-- <LogStashJSONLayout/> -->
            <PatternLayout pattern="%d{ISO8601} %-5p %c:%L - %m%n" />
        </Console>
    </Appenders>

    <Loggers>
        <Logger name="com.service.vertex" level="OFF" >
            <!-- <AppenderRef ref="vertx_rollingFile" /> -->
            <!-- <AppenderRef ref="vertx_socket" /> -->
            <!-- <AppenderRef ref="STDOUT" /> -->
            <AppenderRef ref="vertx_file" />
        </Logger>


        <Logger name="org.mongodb.driver" level="OFF">
            <AppenderRef ref="vertx_rollingFile" />
            <AppenderRef ref="vertx_socket" />
            <AppenderRef ref="STDOUT" />
            <AppenderRef ref="vertx_file" />
        </Logger>


        <Root level="INFO">
            <AppenderRef ref="vertx_socket" />  
                    <!--<AppenderRef ref="STDOUT" />-->
            <AppenderRef ref="vertx_file" /> 
        </Root> 
    </Loggers>
</Configuration>

日志:

Apr 03, 2019 2:02:35 PM com.service.vertex.dao.UsersCollection
INFO: {"response_code":551,"description":"INVALIDATE SESSION ERROR: null","log_origin":"system","id":"ERROR (57) 14:02:35:050","time":"2019-04-03 14:02:35:050","host_name":"pc","server_port":"444","level":"ERROR","verticle":"admin","remote_address":"172.15.333.21"}

仍打印到控制台

共有1个答案

史超英
2023-03-14

在配置中注释以下内容并尝试

 <Console name="STDOUT" target="SYSTEM_OUT">
            <!-- <LogStashJSONLayout/> -->
            <PatternLayout pattern="%d{ISO8601} %-5p %c:%L - %m%n" />
        </Console>

和附件

<AppenderRef ref="STDOUT" />
 类似资料:
  • 我正在为我的应用程序使用spring boot,并且我正在使用默认的spring boot日志记录。 是否有任何配置来防止spring boot将日志消息打印到控制台?

  • 问题内容: 我已经设定 我已经禁用了log4j.properties中的所有消息 但是Hibernate将所有查询和语句写入控制台。 问题答案: 设置为告诉hibernate将 所有SQL语句写入控制台。 这是将日志类别设置为调试的替代方法。 因此,即使将此属性设置为,也请确保没有定义以下类别(或配置为使用控制台附加程序): 另外,请确保在实例化对象时不要将程序设置为true 。寻找这样的事情:

  • 问题内容: 此代码是否同时写入日志文件和控制台? 问题答案: 不,它不会同时写入两者。只会写入控制台。关于原始代码的简短说明。我想您在某处定义,但是代码仍然不正确。您需要在语句中使用引号,例如: 因为我认为您是要附加到文件中。否则,您的代码将抛出一个因为未定义的变量。 但是,正如其他人所说,您应该强烈考虑使用日志记录模块。这是一个如何同时写入控制台和日志文件的简单示例。该代码部分源自此处和此处:

  • 我真的被困在作业的这一特定部分,它要求我将简单文本打印到控制台中,然后创建一个文件(无论主文件中的std::string文件名是什么),并将控制台的内容打印到该文件中。 我真的很困惑,因为该函数需要ostream,而且它还需要该函数使用任何文件名(在本例中是statistics.txt,只是为了测试该函数是否工作)。 函数是PrintStatistics。 我知道我可以使用cout在控制台上打印,

  • 在中有一个,可以将日志写入到。 我需要在中使用相同的功能,但我还没有找到这样做的选项。有人知道如何使用实现同样的效果吗?

  • 问题语句:我有一个在Xcode中运行的程序,它有一堆print()语句,可以很好地将输出打印到调试控制台。然而,我希望也能够将这些输出重定向到一个文件,这样我就可以让用户将它们发送给我,作为调试的一种方式。 SO上找到的解决方案使我可以将输出重定向到文件,但调试控制台输出将丢失。 问:我想要我的蛋糕和吃它。我希望能够将print()语句重定向到调试控制台和文件。 所以我有引用:https://st