log4j2配置文件 网上很多自己总结一下
1 导入依赖包使用maven管理
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- <project.build.jdkVersion>1.7</project.build.jdkVersion> <springversion>3.2.7.RELEASE</springversion> -->
<project.build.jdkVersion>1.8</project.build.jdkVersion>
<springversion>4.3.9.RELEASE</springversion>
<log4j2-version>2.11.0</log4j2-version>
</properties>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<dependency><groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2-version}</version>
</dependency>
2 在你的web工程中web.xml添加
<context-param> <param-name>log4jConfigLocation</param-name> <!--<param-value>classpath:log4j.properties</param-value>--> <param-value>classpath:log4j2.xml</param-value> </context-param>
其中log4j2.xml可以自定义
2.1如果时普通工程
需要将log4j2.xml文件放到classpath路径下 名称不要修改 这样程序可以自动加载log4j2.xml配置 需要将resurce文件夹设置为 classpath 工程目录结构
设置文件夹为classpath 步骤 点击 idea 上File -> project structure 然后步骤如下
最后点击 应用apply 确认Ok
3 新建一个log4j2.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!-- status : 指定log4j本身的打印日志的级别.ALL< Trace < DEBUG < INFO < WARN < ERROR < FATAL < OFF。 monitorInterval : 用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s. 如果你需要测试 是否会自动加载 需要注意 如果使用的时 eclipse 或者 idea 这种工具 不能直接修改 src下的java 源码中的log4j2.xml 这样不起作用 需要修改编译之后(idea中target/classes)的那个文件目录下的log4j2.xml --> <Configuration status="ALL" monitorInterval="30"> <Properties> <!-- 配置日志文件输出目录 ${sys:user.home} --> <!--共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF. All:最低等级的,用于打开所有日志记录. Trace:是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出. Debug:指出细粒度信息事件对调试应用程序是非常有帮助的. Info:消息在粗粒度级别上突出强调应用程序的运行过程. Warn:输出警告及warn以下级别的日志. Error:输出错误信息日志. Fatal:输出每个严重的错误事件将会导致应用程序的退出的日志. OFF:最高等级的,用于关闭所有日志记录--> <Property name="LOG_HOME">logs112</Property> <property name="ERROR_LOG_FILE_NAME">${LOG_HOME}/error</property> <property name="WARN_LOG_FILE_NAME">${LOG_HOME}/warn</property> <property name="INFO_LOG_FILE_NAME">${LOG_HOME}/info</property> <property name="DEBUG_LOG_FILE_NAME">${LOG_HOME}/debug</property> <property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} [%M-%L-%t] %-5level %logger{36} - %msg%n</property> <!-- <property name="PATTERN">%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n</property>--> </Properties> <Appenders> <!--这个输出控制台的配置 --> <Console name="Console" target="SYSTEM_OUT"> <!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --> <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/> <!-- 输出日志的格式 --> <!-- %d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间 %p : 日志输出格式 %c : logger的名称 %m : 日志内容,即 logger.info("message") %n : 换行符 %C : Java类名 %L : 日志输出所在行数 %M : 日志输出所在方法名 hostName : 本地机器名 hostAddress : 本地ip地址 --> <PatternLayout pattern="${PATTERN}"/> </Console> <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用 --> <!--append为TRUE表示消息增加到指定文件中,false表示消息覆盖指定的文件内容,默认值是true --> <File name="log" fileName="${LOG_HOME}/test.log" append="false"> <PatternLayout pattern="${PATTERN}"/> </File> <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size, 则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 --> <RollingFile name="RollingFileDebug" fileName="${DEBUG_LOG_FILE_NAME}/debug.log" filePattern="${DEBUG_LOG_FILE_NAME}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"> <Filters> <!--设置只输出级别为debug的日志--> <ThresholdFilter level="debug"/> <ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/> </Filters> <!-- 这种方式 时输出 debug一级以上的日志 <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>--> <PatternLayout pattern="${PATTERN}"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="2 kB"/> </Policies> <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 --> <DefaultRolloverStrategy max="20"/> </RollingFile> <RollingFile name="RollingFileInfo" fileName="${INFO_LOG_FILE_NAME}/info.log" filePattern="${LOG_HOME}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"> <Filters> <!--设置只输出级别为info的日志--> <ThresholdFilter level="info"/> <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/> </Filters> <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --> <!--<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>--> <PatternLayout pattern="${PATTERN}"/> <Policies> <!-- 基于时间的滚动策略,interval属性用来指定多久滚动一次,默认是1 hour。 modulate=true用来调整时间: 比如现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am. --> <!-- 关键点在于 filePattern后的日期格式,以及TimeBasedTriggeringPolicy的interval, 日期格式精确到哪一位,interval也精确到哪一个单位 --> <!-- log4j2的按天分日志文件 : info-%d{yyyy-MM-dd}-%i.log--> <!--<TimeBasedTriggeringPolicy interval="1" modulate="true"/>--> <TimeBasedTriggeringPolicy/> <!-- SizeBasedTriggeringPolicy:Policies子节点, 基于指定文件大小的滚动策略,size属性用来定义每个日志文件的大小. --> <SizeBasedTriggeringPolicy size="2 kB" /> </Policies> </RollingFile> <RollingFile name="RollingFileWarn" fileName="${WARN_LOG_FILE_NAME}/warn.log" filePattern="${WARN_LOG_FILE_NAME}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"> <Filters> <!--设置只输出级别为WARN的日志--> <ThresholdFilter level="warn"/> <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/> </Filters> <!--<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>--> <PatternLayout pattern="${PATTERN}"/> <Policies> <!--设置每天打包日志一次 还可以同时使用 --> <!--<TimeBasedTriggeringPolicy interval="1" modulate="true"/>--> <!--设置日志文件满1MB后打包--> <!--<SizeBasedTriggeringPolicy size="1 MB" />--> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="2 kB"/> </Policies> <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 --> <DefaultRolloverStrategy max="20"/> </RollingFile> <RollingFile name="RollingFileError" fileName="${ERROR_LOG_FILE_NAME}/error.log" filePattern="${ERROR_LOG_FILE_NAME}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd-HH-mm}-%i.log"> <Filters> <!--设置只输出级别为error的日志--> <ThresholdFilter level="error"/> <!--<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>--> </Filters> <!--<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>--> <PatternLayout pattern="${PATTERN}"/> <Policies> <!-- log4j2的按分钟 分日志文件 : warn-%d{yyyy-MM-dd-HH-mm}-%i.log 按分钟/小时/天 关键看filePattern后面配置的精 确度到什么时候%d{yyyy-MM-dd-HH-mm}到分钟按分钟分 %d{yyyy-MM-dd-HH}到小时按小时分 %d{yyyy-MM-dd}到天 按天分--> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <!-- <SizeBasedTriggeringPolicy size="10 MB" /> --> </Policies> </RollingFile> </Appenders> <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效--> <Loggers> <!--过滤掉spring和mybatis的一些无用的DEBUG信息--> <!-- <logger name="org.springframework" level="INFO"></logger> <logger name="org.mybatis" level="INFO"></logger>--> <!-- 第三方日志系统 --> <!-- <logger name="org.springframework.core" level="info"/> <logger name="org.springframework.beans" level="info"/> <logger name="org.springframework.context" level="info"/> <logger name="org.springframework.web" level="info"/> <logger name="org.jboss.netty" level="warn"/> <logger name="org.apache.http" level="warn"/>--> <!-- 配置日志的根节点 --> <root level="all"> <appender-ref ref="Console"/> <appender-ref ref="RollingFileDebug"/> <appender-ref ref="RollingFileInfo"/> <appender-ref ref="RollingFileWarn"/> <appender-ref ref="RollingFileError"/> </root> </Loggers> </Configuration>
还有其他的配置 步骤2和3反了 别要在意 暂时不记录 该种方式 亲测可以使用