java-普通java项目使用log4j

1. 背景
使用maven引入失败,遂直接下载jar包引入
2. 下载地址
https://logging.apache.org/log4j/2.x/download.html
3. 解压包
java-普通java项目使用log4j_第1张图片
4. 将上面红框两个jar包放入java项目libs目录中(基本功能)
java-普通java项目使用log4j_第2张图片
5.普通的java项目 可以将log4j2.xml(因为是log4j版本2.14的版本,所以配置文件是log4j2,而不是log4j)放在src目录或者在项目根目录创建一个resources目录(如果是maven项目,位置不一定),然后放在resource目录下,前提是设置resource为resources root

在resources目录下(这里注意resources目录的位置,是在跟目录下)
java-普通java项目使用log4j_第3张图片
在src目录下
java-普通java项目使用log4j_第4张图片

推荐使用基础配置二
如果不使用配置文件,只能输出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");

备注:

  1. log4j配置文件地址:
    https://logging.apache.org/log4j/2.x/manual/configuration.html
  2. 参考较全
    https://www.jianshu.com/p/ccafda45bcea
  3. 信息登记
    OFF 0
    FATAL 100
    ERROR 200
    WARN 300
    INFO 400
    DEBUG 500
    TRACE 600

你可能感兴趣的:(java,普通项目,使用,log4j,基础)