Java编程基础:配置log4j2.xml同时输出日志到文件和控制台

转:

Java编程基础:配置log4j2.xml同时输出日志到文件和控制台

开发Java服务程序记日志是很关键的。一旦服务发布部署在云上,出了问题没有日志根本没法定位。

现在比较流行是用Spring Boot搭建微服务框架,搭配log4j2输出日志。输出到标准输出的日志可以通过kabana收集和查看,同时程序员也希望能有文件记录完整的日志信息。

下面给一份log4j2的xml配置样例,支持日志同时输出到标准输出和文件。

<?xml version="1.0" encoding="UTF-8"?>  
<Configuration status="info">  
    <Appenders>  
        <Console name="Console" target="SYSTEM_OUT" follow="true">  
            <PatternLayout>  
                <pattern>%5p [%t] %d{yyyy-MM-dd HH:mm:ss} %m%n</pattern>  
            </PatternLayout>  
        </Console>  
        <RollingFile name="datasource" immediateFlush="true"
            fileName="log/datasource/datasource.log" filePattern="log/datasource/datasource - %d{yyyy-MM-dd HH_mm_ss}.log.gz">
            <PatternLayout>
                <pattern>%5p [%t] %d{yyyy-MM-dd HH:mm:ss} %m%n</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="20MB" />
            </Policies>
        </RollingFile>
        <RollingFile name="framework" immediateFlush="true"
            fileName="log/framework/framework.log" filePattern="log/framework/framework - %d{yyyy-MM-dd HH_mm_ss}.log.gz">
            <PatternLayout>
                <pattern>%5p [%t] %d{yyyy-MM-dd HH:mm:ss} %m%n</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="20MB" />
            </Policies>
        </RollingFile>
    </Appenders>  
    <Loggers>  
        <logger name="org.springframework" level="INFO" additivity="true">
            <AppenderRef ref="framework" />
        </logger>
        <logger name="com.elon.dds" level="INFO" additivity="true">
            <AppenderRef ref="datasource" />
        </logger>
        <Root level="info">  
            <AppenderRef ref="Console" />  
        </Root>  
    </Loggers>  
</Configuration>  

通过Appenders定义Spring框架和业务模块的日志输出到不同的文件。在Loggers中指定不同包的日志输出到不同文件,Root指定日志输出到标准输出。

注意Logger配置的additivity=“true”,表示日志信息除了在当前logger输出外还会在Root的Logger输出。这样就实现了同时在文件和控制台输出的目的
————————————————
版权声明:本文为CSDN博主「Elon.Yang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ylforever/article/details/80984613

原文地址:https://www.cnblogs.com/libin6505/p/14963244.html