1. 背景
使用maven引入失败,遂直接下载jar包引入
2. 下载地址
https://logging.apache.org/log4j/2.x/download.html
3. 解压包
4. 将上面红框两个jar包放入java项目libs目录中(基本功能)
5.普通的java项目 可以将log4j2.xml(因为是log4j版本2.14的版本,所以配置文件是log4j2,而不是log4j)放在src目录或者在项目根目录创建一个resources目录(如果是maven项目,位置不一定),然后放在resource目录下,前提是设置resource为resources root
在resources目录下(这里注意resources目录的位置,是在跟目录下)
在src目录下
推荐使用基础配置二
如果不使用配置文件,只能输出error fatal级别日志
基础配置一
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" strict="true" name="XMLConfigTest"
packages="org.apache.logging.log4j.test">
<Properties>
<Property name="filename">D:\logs\kddlogs.txt</Property>
</Properties>
<Filter type="ThresholdFilter" level="trace"/>
<Appenders>
<Appender type="Console" name="STDOUT">
<Layout type="PatternLayout" pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
<Filters>
<Filter type="MarkerFilter" marker="FLOW" onMatch="DENY" onMismatch="NEUTRAL"/>
<Filter type="MarkerFilter" marker="EXCEPTION" onMatch="DENY" onMismatch="ACCEPT"/>
</Filters>
</Appender>
<Appender type="Console" name="FLOW">
<Layout type="PatternLayout" pattern="%C{1}.%M %m %ex%n"/><!-- class and line number -->
<Filters>
<Filter type="MarkerFilter" marker="FLOW" onMatch="ACCEPT" onMismatch="NEUTRAL"/>
<Filter type="MarkerFilter" marker="EXCEPTION" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
</Appender>
<Appender type="File" name="File" fileName="${filename}">
<Layout type="PatternLayout">
<Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
</Layout>
</Appender>
</Appenders>
<Loggers>
<Logger name="org.apache.logging.log4j.test1" level="debug" additivity="false">
<Filter type="ThreadContextMapFilter">
<KeyValuePair key="test" value="123"/>
</Filter>
<AppenderRef ref="STDOUT"/>
</Logger>
<Logger name="org.apache.logging.log4j.test2" level="debug" additivity="false">
<AppenderRef ref="File"/>
</Logger>
<Root level="trace">
<AppenderRef ref="File"/>
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
基础配置二
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-7level %logger{36} - %msg%n"/>
</Console>
<File name="MyFile" fileName="logs/app.log">
<PatternLayout pattern="%d %-7level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="info">
<!-- Only events at DIAG level or more specific are sent to the console. -->
<AppenderRef ref="Console" />
<AppenderRef ref="MyFile" />
</Root>
</Loggers>
</Configuration>
配置三,日志文件滚动
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-7level %logger{36} - %msg%n"/>
</Console>
<File name="MyFile" fileName="G:\wglog\dog.log">
<PatternLayout pattern="%d %-7level %logger{36} - %msg%n"/>
<Filters>
<!--将ERROR及其以上级别的日志给DENY掉-->
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
<!--ACCEPT warn级别的日志-->
<ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
</File>
<RollingFile name="RollingFile" fileName="G:\wglog\wg.log" filePattern="G:\wglog\wg-%d{yyyy-MM-dd HH}.log">
<PatternLayout pattern="%d %-7level %logger{36} - %msg%n"/>
<Policies>
<!-- <TimeBasedTriggeringPolicy interval="1"/>-->
<SizeBasedTriggeringPolicy size="20MB"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="trace">
<!-- Only events at DIAG level or more specific are sent to the console. -->
<AppenderRef ref="Console" />
<AppenderRef ref="MyFile" />
<AppenderRef ref="RollingFile" />
</Root>
</Loggers>
</Configuration>
6. 代码使用
注意有些时候引入的包看是否是这两个包
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
private static Logger logger = LogManager.getLogger(Controller.class);
logger.info("2222");
logger.warn("333");
logger.error("323232323");
logger.debug("34234234234234");
备注:
- log4j配置文件地址:
https://logging.apache.org/log4j/2.x/manual/configuration.html - 参考较全
https://www.jianshu.com/p/ccafda45bcea - 信息登记
OFF 0
FATAL 100
ERROR 200
WARN 300
INFO 400
DEBUG 500
TRACE 600