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

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

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

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

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

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

注意Logger配置的additivity=”true”,表示日志信息除了在当前logger输出外还会在Root的Logger输出。这样就实现了同时在文件和控制台输出的目的

猜你喜欢

转载自blog.csdn.net/monstar_hu/article/details/81208845