2015年5月停止了对于log4j的更新。
log4j 2的配置文件不再支持properties文件格式,推荐使用xml文件配置。
一、日志级别
fatal:致命错误,在catch块中使用。
error:异常错误,在catch块中使用。
warn:警告,在需要警告的地方使用。
info:信息(方法级别),在调用方法的位置使用。
debug:调试(代码级别),在方法内部使用。
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
二、使用步骤
1、导入jar包:
2、编写配置文件:
在CLASSPATH目录(src)下创建配置文件log4j2.xml。
3、通过LogManager.getLogger()获取Logger对象,调用对应方法进行打印。
配置文件结构:
<!--根节点,可以设置默认输出级别,自动更新配置文件频率--> <configuration> <!--输出位置--> <appenders> <console></console> <File></File> <RollingFile></RollingFile> </appenders> <!--具体的输出对象--> <Loggers> <root></root> <Logger></Logger> </Loggers> </configuration>
例子:
实现了在控制台、指定文件、指定文件夹下输出日志,在文件夹中最多存在5个日志文件,每个文件大小为10mb。
<?xml version="1.0" encoding="UTF-8"?> <!--Configuration根节点 status:这个用于设置默认输出的最小级别。 monitorInterval:自动检测修改配置文件和重新配置的间隔秒数。--> <configuration status="WARN" monitorInterval="30"> <!--appenders节点:日志信息输出目的地--> <appenders> <!--console节点,控制台输出日志: name:名字 target:输出地点--> <console name="Console" target="SYSTEM_OUT"> <!--PatternLayout节点,输出日志的格式--> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </console> <!--File节点,输出日志到文件中: name:名字 fileName:输出地址 append:是否为追加模式--> <File name="log" fileName="d:/fileLog.log" append="true"> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </File> <!--RollingFile节点,输出日志到文件中,可自动新建文件: name:名字 fileName:输出位置 filePattern:指定新建文件的名称格式。--> <RollingFile name="RollingFileInfo" fileName="d:/logs/warn.log" filePattern="d:/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"> <!--ThresholdFilter节点:设置输出级别 level:设置基准级别 onMatch:是否输出基准级别以上的 onMisMatch:是否输出基准级别以下的--> <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> <!--Policies节点,定义新增文件策略--> <Policies> <!--基于时间的新建策略,默认是1小时新建一个文件--> <TimeBasedTriggeringPolicy interval="1"/> <!--基于指定大小的新建策略--> <SizeBasedTriggeringPolicy size="10MB"/> </Policies> <!-- DefaultRolloverStrategy节点,设置最大文件数量: max:最大文件数量默认为7,日志数量超过max个会删除之前的日志--> <DefaultRolloverStrategy max="5"/> </RollingFile> </appenders> <!--loggers节点,日志对象--> <loggers> <!--root节点,项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出。 level:默认的最低的输出级别 --> <root level="all"> <!--appender-ref节点,选择输出位置--> <appender-ref ref="Console"/> <appender-ref ref="log"/> <appender-ref ref="RollingFileInfo"/> </root> <!--Logger节点,用来指定为某个包或类的日志 name:指定该Logger所适用的类或者类所在的包全路径。 level:输出最低级别. additivity:默认为true,会与root日志器重复打印。 --> <Logger name="lurenjia.logj4j" level="debug" additivity="false"> <appender-ref ref="Console"/> <appender-ref ref="log"/> <appender-ref ref="RollingFileInfo"/> </Logger> </loggers> </configuration>View Code
测试代码:
package lurenjia.logj4j; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /** * @author lurenjia * @date 2022/12/24-22:07 */ public class Client { public static void main(String[] args) { Logger logger = LogManager.getLogger(); int i = 0; while(true){ logger.trace("这是第"+i+"次输出trace信息"); logger.debug("这是第"+i+"次输出debug信息."); logger.info("这是第"+i+"次输出info信息."); logger.warn("这是第"+i+"次输出warn信息."); logger.error("这是第"+i+"次输出error信息."); logger.fatal("这是第"+i+"次输出fatal信息"); i++; } } }
运行结果:
控制台打印了日志信息,指定文件夹下生成了日志文件。
标签:输出,配置文件,程序运行,信息,log4j,日志,logger From: https://www.cnblogs.com/lurenjia-bky/p/17008492.html