log4j2.xml完美配置

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<configuration status="WARN" monitorInterval="1800">
    <Properties>
        <!-- 日志默认存放的位置,这里设置为项目根路径下,也可指定绝对路径 -->
                <!-- ${web:rootDir}是web项目根路径,java项目没有这个变量,需要删掉,否则会报异常 -->
                <property name="basePath">${web:rootDir}/log4j2Logs</property>
                <!-- <property name="basePath">d:/qfxSpringMVCMybaitsDemoLogs</property> -->

        <!-- 控制台默认输出格式,"%-5level":日志级别,"%l":输出完整的错误位置,是小写的L,因为有行号显示,所以影响日志输出的性能 -->
                <property name="console_log_pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %l - %m%n</property>
                <!-- 日志文件默认输出格式,不带行号输出(行号显示会影响日志输出性能);%C:大写,类名;%M:方法名;%m:错误信息;%n:换行 -->
                <property name="log_pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %C.%M - %m%n</property>

                <!-- 日志默认切割的最小单位 -->
                <property name="every_file_size">20MB</property>
                <!-- 日志默认输出级别 -->
                <property name="output_log_level">DEBUG</property>

                <!-- 日志默认存放路径(所有级别日志) -->
                <property name="rolling_fileName">${basePath}/all.log</property>
                <!-- 日志默认压缩路径,将超过指定文件大小的日志,自动存入按"年月"建立的文件夹下面并进行压缩,作为存档 -->
                <property name="rolling_filePattern">${basePath}/%d{yyyy-MM}/all-%d{yyyy-MM-dd}-%i.log.gz</property>
                <!-- 日志默认同类型日志,同一文件夹下可以存放的数量,不设置此属性则默认为7个 -->
                <property name="rolling_max">50</property>

                <!-- Info日志默认存放路径(Info级别日志) -->
                <property name="info_fileName">${basePath}/info.log</property>
                <!-- Info日志默认压缩路径,将超过指定文件大小的日志,自动存入按"年月"建立的文件夹下面并进行压缩,作为存档 -->
                <property name="info_filePattern">${basePath}/%d{yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz</property>
                <!-- Info日志默认同一文件夹下可以存放的数量,不设置此属性则默认为7个 -->
                <property name="info_max">10</property>

                <!-- Warn日志默认存放路径(Warn级别日志) -->
                <property name="warn_fileName">${basePath}/warn.log</property>
                <!-- Warn日志默认压缩路径,将超过指定文件大小的日志,自动存入按"年月"建立的文件夹下面并进行压缩,作为存档 -->
                <property name="warn_filePattern">${basePath}/%d{yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz</property>
                <!-- Warn日志默认同一文件夹下可以存放的数量,不设置此属性则默认为7个 -->
                <property name="warn_max">10</property>

                <!-- Error日志默认存放路径(Error级别日志) -->
                <property name="error_fileName">${basePath}/error.log</property>
                <!-- Error日志默认压缩路径,将超过指定文件大小的日志,自动存入按"年月"建立的文件夹下面并进行压缩,作为存档 -->
                <property name="error_filePattern">${basePath}/%d{yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz</property>
                <!-- Error日志默认同一文件夹下可以存放的数量,不设置此属性则默认为7个 -->
                <property name="error_max">10</property>

                <!-- 控制台显示的日志最低级别 -->
                <property name="console_print_level">DEBUG</property>

        </Properties>

    <!--定义appender -->
        <appenders>
            <!-- 用来定义输出到控制台的配置 -->
                <Console name="Console" target="SYSTEM_OUT">
                    <!-- 设置控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
                    <ThresholdFilter level="${console_print_level}" onMatch="ACCEPT" onMismatch="DENY"/>
                    <!-- 设置输出格式,不设置默认为:%m%n -->
                        <PatternLayout pattern="${console_log_pattern}"/>
                </Console>

                <!-- 打印root中指定的level级别以上的日志到文件 -->
                <RollingFile name="RollingFile" fileName="${rolling_fileName}" filePattern="${rolling_filePattern}">
                        <PatternLayout pattern="${log_pattern}"/>
                        <SizeBasedTriggeringPolicy size="${every_file_size}"/>
                        <!-- 设置同类型日志,同一文件夹下可以存放的数量,如果不设置此属性则默认存放7个文件 -->
                        <DefaultRolloverStrategy max="${rolling_max}" />
                </RollingFile>

                <!-- 打印INFO级别的日志到文件 -->
                <RollingFile name="InfoFile" fileName="${info_fileName}" filePattern="${info_filePattern}">
                        <PatternLayout pattern="${log_pattern}"/>
                        <SizeBasedTriggeringPolicy size="${every_file_size}"/>
                        <DefaultRolloverStrategy max="${info_max}" />
                        <Filters>
                <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
                </RollingFile>

                <!-- 打印WARN级别的日志到文件 -->
                <RollingFile name="WarnFile" fileName="${warn_fileName}" filePattern="${warn_filePattern}">
                        <PatternLayout pattern="${log_pattern}"/>
                        <SizeBasedTriggeringPolicy size="${every_file_size}"/>
                        <DefaultRolloverStrategy max="${warn_max}" />
                        <Filters>
                <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
                </RollingFile>

                <!-- 打印ERROR级别的日志到文件 -->
                <RollingFile name="ErrorFile" fileName="${error_fileName}" filePattern="${error_filePattern}">
                        <PatternLayout pattern="${log_pattern}"/>
                        <SizeBasedTriggeringPolicy size="${every_file_size}"/>
                        <DefaultRolloverStrategy max="${error_max}" />
                        <Filters>
                <ThresholdFilter level="FATAL" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
                </RollingFile>
        </appenders>

        <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
        <loggers>
            <!-- 设置对打印sql语句的支持 -->
                <logger name="java.sql" level="debug" additivity="false">
            <appender-ref ref="Console"/>
        </logger>
                <!--建立一个默认的root的logger-->
                <root level="${output_log_level}">
                        <appender-ref ref="RollingFile"/>
                        <appender-ref ref="Console"/>
                        <appender-ref ref="InfoFile"/>
                        <appender-ref ref="WarnFile"/>
                        <appender-ref ref="ErrorFile"/>
                </root>
        </loggers>
</configuration>

web.xml文件中配置log4j2的信息

<!-- log4j2设置 ,此处配置适用于Servlet的3.0及以上版本使用,3.0以下版本另有配置 -->
<!-- 如果log4j2.xml放在classpath目录下(即class目录),纯web项目中,不需要log4j2的任何配置也能启用日志 -->
<!-- 如果不是放在classpath目录下,则需要指定配置文件路径 -->
<!-- 如果放在classpath下其他的目录中,即使指定路径也无法找到log4j2.xml -->
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:log4j2.xml</param-value>
    <!-- 配置log4j2.xml文件路径在/WEB-INF/目录下,放置在这里可以被加载到文件 -->
    <!-- <param-value>/WEB-INF/log4j2.xml</param-value> -->
</context-param>
<listener>
<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>

原文地址:http://blog.51cto.com/1197822/2157668

时间: 2024-08-13 20:54:08

log4j2.xml完美配置的相关文章

log4j2.xml 配置

动态生成日志, 日志路径: log4j2.xml 配置如下: <?xml version="1.0" encoding="UTF-8"?> <Configuration> <Appenders> <File name="Log4jFile" append="true" fileName="logs/${date:yyyy-MM}/${date:yyyy-MM-dd}-log.

log4j2.xml实用例子

一个多月前,我写了篇关于log4j.xml配置的文章,点击此处查看:http://www.cnblogs.com/guogangj/p/3931397.html 最近,我把自己的log4j升级到2.0之后发现之前的配置文件不能用了,于是把旧的配置挪到新的来,挪的过程中遇到了些问题,但一番搜索测试后基本上趋于完美了.老样子,先上代码: <?xml version="1.0" encoding="UTF-8"?> <!--设置log4j2的自身log级

将log4j2的配置文件log4j2.xml拆分成多个xml文件

在日常的项目开发中,我们可能会使用log4j2分离系统日志与业务日志 ,这样一来,log4j2.xml 这个配置文件可能就会变得非常臃肿.庞大,那么我们可以将这个文件拆分成多个配置文件吗? 答案是肯定可以的,现在我们就来拆拆看: 假如最初的配置文件是这样的: <?xml version="1.0" encoding="UTF-8"?> <configuration status="OFF"> <Properties&

Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)

开篇的话 最近各种事,比较烦心,忙了N久终于慢慢腾腾的开始了OpenCV的学习,环境搭建也耗费了好久的时间.不管怎样,开始了就努力加油,关于环境的大家就转述一个学姐的博文吧,自己不想再弄了,因为真的很完美了. 原文转载链接:http://my.phirobot.com/blog/2014-02-opencv_configuration_in_vs.html Summary 2012年4月给同学写了篇傻瓜式的 VS2010+Opencv-2.4.0的配置攻略 结果没有想到,点击量一路飙升,固定在了

log4j2.xml日志文件设置文件路径

笔者最近的项目里使用了spring,spring通过web.xml配置监听器,在web启动时web.root系统变量,以供其他变量使用,例如 在属性文件里使用${web.root}以取得完整路径,项目里使用了log4j2,在设置文件路径的时候也尝试用${web.root}却始终无法 获得属性值,创建的文件夹名字叫${web.root},显然这不符合实际工作环境需要.网上也有${sys:web.root}的说法. 也只会创建${sys:web.root}文件夹,后来在官网上找到相关设置方法Look

IDEA整合日志框架Log4j2+Slf4j详细配置过程

日志框架这么多,他们之间到底是什么关系呢?笼统的讲就是slf4j是一系列的日志接口,而log4j2.logback是具体实现了接口功能的日志框架.现在的主流日志接口都使用slf4j,而日志的实现就见仁见智了,至于他们的关系请自行百度,此处选择log4j2作为实现框架.网上看到的教程要么对代码没有解释,对新手不友好:要么时间比较久远,跟不上时代.这里使用新版本并结合大量注释,力求简洁明了,有什么问题欢迎留言交流. 运行环境: log4j2 2.8.1 + slf4j 1.7.25 IntelliJ

Spring Boot + Log4j2 日志框架配置 (Maven)

参考Spring Boot官方文档 日志部分 Spring Boot默认情况下,当使用"Starters" 使用Logback输出日志, 还包括适当的Logback路由, 确保其他的日志框架(Java Util Logging, Commons Logging, Log4j, SLF4J)都能正常使用 Sping Boot文档的 26.5 Custom Log Configuration 章节,说明了自定义日志配置方法 多样的日志系统可以通过 添加适当的日志框架库到classpath

Log4j2+spring+maven配置

1,在项目pom.xml下,配置 <dependency>        <groupId>org.apache.logging.log4j</groupId>       <artifactId>log4j-api</artifactId>      <version>2.0.2</version>  </dependency>  <dependency>     <groupId>o

logback logback.xml 常用配置详解

一:根节点 包含的属性: scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true. scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒.当scan为true时,此属性生效.默认的时间间隔为1分钟. debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态.默认值为false. 例如: <configuration scan="true" scan